The following works just fine:
http://mydomain.org/DE/d:(^|;)[^;:]{7}(;|:|$)/o:-DE;US;-US
but the following fails (the only difference is [^;:] goes to \w):
http://mydomain.org/DE/d:(^|;)\w{7}(;|:|$)/o:-DE;US;-US
In this case I get:
Not Found
The requested URL /DE/d:(^|;)\w{7}(;|:$)/o:-DE;US;-US was not found on
this server.
To me, the fact that it shows me the request as I gave it implies that
apache has some issue with that backspace character.
my rewrite log does not show the request being processed, error log
shows nothing. The access log shows:
127.0.0.1 127.0.0.1 - - [18/May/2007:11:16:45 +0200] - "GET /DE/d:
(%5E|;)%5Cw%7B7%7D(;|:$)/o:-DE;US;-US HTTP/1.1" /DE/d:(^|;)\\w{7}(;|:
$)/o:-DE;US;-US MyDomain.org mydomain.org 404 232 "-" "Mozilla/5.0
(Windows; U; Windows NT 5.1; en-US; rv:1.8.0.11) Gecko/20070312
Firefox/1.5.0.11" - "-"
Thanks,
Csaba Gabor from Vienna
Naming it correctly allows you to find a related directive:
http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes
HansH
Drat. You are correct about the title. Sorry about that.
Thanks for your response Hans - that was a very useful link, much
appreciated. Tried it right out.
Unfortunately, although apache accepts the backslash, it converts it
to a forward slash. Major bummer.
I have a solution to my original problem although I am not very happy
about it.
In apache's configuration file, httpd.conf, (or in my case: httpd-
vhosts.conf) under my virtual domain I put:
ErrorDocument 404 "/search.php"
Search.php is the page that would otherwise be handling the request.
In Search.php I added the third line (the first two were already
there):
$path_info = @$_SERVER['ORIG_PATH_INFO'];
if (!$path_info) $path_info = @$_SERVER['PATH_INFO'];
if (($ru=$_SERVER['REDIRECT_URL']) && !$path_info) $path_info = $ru;
And everything appears to be working again.
I found this approach at:
http://www.devarticles.com/c/a/Apache/Custom-Error-404-Documents-with-PHP/
Csaba Gabor from Vienna