我想通过一个脚本(index.php
在 web-root 中)处理所有传入的请求。
因此,以下是当前发生的情况:http://localhost/foo/bar/baz
由 Apache(通过.htaccess
)路由到:http://localhost/index.php?url=foo/bar/baz
这很好用,但是,在 Firefox 中我可以这样做:http://localhost/foo\
-> 注意反斜杠。
而 Apache,而不是这样做:/index.php?url=foo\
发出一个通用错误页面说:
找不到对象!在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。
如果您认为这是服务器错误,请联系网站管理员。
错误 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
直接去:http://localhost/index.php?url=foo\
但是没有问题。
我在互联网上看到的所有网站似乎都能够优雅地处理反斜杠(例如,http://stackoverflow.com/tags/php\\\\\
)。
我认为这种行为是一个错误,我想强制 Apache 正确转发反斜杠。这是我.htaccess
的完整文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]
我怎样才能使它正常工作?
编辑:我刚刚在我的虚拟主机上尝试了这个,他们正确处理了这个。让我觉得这是一些设置httpd.conf
。