2013-10-07 53 views
2

当我在我的mod_rewrite正则表达式中包含百分比符号(%)时,我的服务器一直在抛出404错误。我到处搜查无济于事。我正在运行apache 2.4.4并尝试了下面显示的B标志。.htaccess中的百分比符号mod_rewrite

RewriteRule ^pages/([a-zA-Z]+)/([a-zA-Z+%'"]+)$ pages/$1.php?search=$2 [B] 

因此,当我访问pages/animals/cats%20and%20dogs失败。但作品像一个魅力,当我改变([a-zA-Z+%'"]+)(.*)

正则表达式级别=幼儿,所以任何帮助,非常感谢。

回答

2

%20在mod_rewrite中使用\s(空格)匹配。因此,将您的规则更改为:

RewriteRule ^pages/([a-zA-Z]+)/([a-zA-Z+\W'"]+)$ pages/$1.php?search=$2 [B,L] 
+0

当%20位于url中时,用“\ s”替换“%”仍然失败。 我还需要%2C和%40的百分比符号(,@) –

+1

您需要了解在%URL登陆Apache之前编码了%2C和%40个字符等。请参阅编辑答案,以匹配所有这些情况使用'\ W' – anubhava

+0

啊,我明白了!非常感谢,除了'(%2F,%5C)(/,\)'以外,所有特殊字符都在工作。 –