【发布时间】:2016-03-11 00:31:04
【问题描述】:
我有
RewriteRule ^tag/([^/]+)/?$ /test.php?TAG=$1 [L]
有
/tag/m%26m
我希望 m&m 在服务器端。 ( & 被 URL 编码为 %26)
由于某种原因,重写引擎将其视为
/test.php?TAG=m&m
好像它是用
访问的/tag/m&m
var_dump($_GET) 给出
array(2) {
["TAG"]=> string(1) "m"
["m"]=> string(0) ""
}
但是如果我访问
/test.php?TAG=m%26m
它工作正常,并且 var_dump($_GET) 给出了
array(1) {
["TAG"]=> string(3) "m&m"
}
所以问题一定与 Apache 重写引擎有关。如果它不是错误,那么配置重写规则以使其工作的正确方法是什么?
更多 我启用了重写日志,发现:
applying pattern '^tag/([^/]+)/?$' to uri 'tag/m&m'
所以看起来像 %26 编码的 URL 被解码回 &。 apache版本是2.4.6
【问题讨论】: