Apache and backslashes in mod_rewrite
        Posted  
        
            by 
                NuCalTone
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by NuCalTone
        
        
        
        Published on 2011-01-17T01:47:53Z
        Indexed on 
            2011/01/17
            1:53 UTC
        
        
        Read the original article
        Hit count: 597
        
I want to process all incoming requests through a single script (index.php in web-root). 
So, the following is what currently happens: http://localhost/foo/bar/baz
Is routed by Apache (through .htaccess) to: http://localhost/index.php?url=foo/bar/baz
This works well, however, in Firefox I am able to do this: http://localhost/foo\ -> notice the backslash.
And Apache, instead of doing: /index.php?url=foo\
Emits a generic error page saying:
Object not found! The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
Error 404 localhost Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
Directly going to: http://localhost/index.php?url=foo\ works without issues, however.
All the sites that I've seen on the internet seem to be able to handle backslashes gracefully (e.g., http://stackoverflow.com/tags/php\\\\\).
I consider this behavior a bug and I want to force Apache to forward backslashes correctly.
Here's my .htaccess file in its entirety:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]
How can I make this work properly?
© Stack Overflow or respective owner