$ _GET中带有转义&符号的htaccess重写规则失败

时间:2011-12-11 20:34:53

标签: php .htaccess mod-rewrite escaping rewrite

我遇到了一个get参数和htaccess重写规则的问题。 以下是urlencode()'ed链接;我用来重定向到index.php的重写规则,最后是index.php上的print_r($ _ GET)。 正如您所看到的,Ulescaped&符号不是变量static的值的一部分,而是与我的期望相反,被解释为变量分隔符。的为什么吗

初始链接:

<a href="static/Game-Tech-%26-Arts-Lab">link</a>

htaccess的:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L]

的index.php:

Array ( [static] => Game-Tech- [-Arts-Lab] => )

1 个答案:

答案 0 :(得分:23)

啊,好的。有趣。似乎有一个特殊的解决方案,以保持特定的&符号逃脱。使用[B] flag for Rewriterules

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B]

在插入$1占位符时,应该对urlencode特殊字符进行编码。它只适用于Apache 2.2,但我相信。

找到一些参考文献: