我有一套重写规则(在.htaccess中),如下所示:
RewriteRule ^list/vendor/(.*)$ list.php?vendor=$1
RewriteRule ^list/product/(.*)$ list.php?product=$1
RewriteRule ^list/(.*)$ list.php?search=$1
(我不认为前两个与我的问题相关)。
当我输入myserver.com/list/foo%2Cbar
甚至myserver.com/list/foo/bar
时,我会得到我期望的结果:在foo,bar
中使用foo/bar
和$_GET['search']
调用list.php
但如果我输入myserver.com/list/foo%2Fbar
,似乎规则不匹配!我得到了404错误。这可以发生什么? Apache 2.2.14,如果重要的话。
(我尝试在Firefox和Chrome中使用相同的结果 - 但当然可能是浏览器正在运行)。
答案 0 :(得分:15)
Bah,我发现它... Apache选项AllowEncodedSlashes
,无法为每个目录或.htaccess设置,默认情况下为Off。
构建一个解决方法时间,如果我无法让托管人员在我的虚拟服务器中打开它。