我正在创建一个重写规则,它应该包括一个可以包含字符%的参数,但是当我将它添加到我的规则中时,它会破坏我的网站,并且每个页面都会返回一个错误:
RewriteRule ^sale/([a-zA-Z0-9_-%]+)$ browse.php?id=$1我希望参数能够包含字符、数字0到9以及特殊字符-、_和%。
如果我删除%,它可以正常工作,但显然我希望将其作为字符接受,例如url:
http://www.websitename.com/sale/test%20parameter
发布于 2012-02-20 21:03:16
Apache在将url提供给mod_rewrite之前会对url中的百分比编码字符进行转换。所以如果你想在你的RewriteRule中接受%20,你只需要在你的urls中添加一个空格。但是请注意,空格也是为了分隔RewriteRule中的正则表达式和替换字符串,因此在空格的情况下,您需要使用\对其进行转义
发布于 2012-02-20 18:05:20
您可以使用B flag http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_b
https://stackoverflow.com/questions/9358382
复制相似问题