htaccess重写规则接受参数中的%字符

时间:2012-02-20 08:58:35

标签: .htaccess mod-rewrite url-rewriting

我创建了一个重写规则,其中应该包含一个可能包含字符%的参数,但是当我将其添加到我的规则时,它会破坏我的网站并且每个页面都会返回错误:

RewriteRule ^sale/([a-zA-Z0-9_-%]+)$ browse.php?id=$1

我希望参数能够包含字符,数字0到9以及特殊字符-_%

如果我删除%它工作正常,但显然我希望将其作为字符接受,例如url:

http://www.websitename.com/sale/test%20parameter

2 个答案:

答案 0 :(得分:2)

Apache在将其提供给mod_rewrite之前在URL中转换百分比编码的字符。因此,如果您想在网址中接受%20,则只需在RewriteRule中添加一个空格即可。但请注意,空格也是用于在rewriteRule中分隔正则表达式和替换字符串,因此对于空格,您需要使用\

来对其进行转义。

答案 1 :(得分:-1)