无法匹配mod_rewrite中的%2F

时间:2011-09-25 09:46:15

标签: mod-rewrite url-rewriting apache2

我有一套重写规则(在.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中使用相同的结果 - 但当然可能是浏览器正在运行)。

1 个答案:

答案 0 :(得分:15)

Bah,我发现它... Apache选项AllowEncodedSlashes,无法为每个目录或.htaccess设置,默认情况下为Off。

构建一个解决方法时间,如果我无法让托管人员在我的虚拟服务器中打开它。