我遇到一个get参数与htaccess重写规则相结合的问题.
下面是urlencode()的链接;重写规则我用来重定向到index.PHP,最后是index.PHP上的一个print_r($_ GET).
您可以看到,urlescaped&符号不是变量static的值的一部分,而是与我的期望相反,被解释为变量分隔符.为什么?
下面是urlencode()的链接;重写规则我用来重定向到index.PHP,最后是index.PHP上的一个print_r($_ GET).
您可以看到,urlescaped&符号不是变量static的值的一部分,而是与我的期望相反,被解释为变量分隔符.为什么?
初始链接:
<a href="static/Game-Tech-%26-Arts-Lab">link</a>
的.htaccess:
RewriteRule ^static/(.*)$/index.PHP?static=$1 [L]
Array ( [static] => Game-Tech- [-Arts-Lab] => )
啊好吧.有趣.似乎有一个特殊的解决方案来保持&符号特别逃脱.使用
[B]
flag for Rewriterules.
RewriteRule ^static/(.*)$/index.PHP?static=$1 [L,B]
当内插$1占位符时,这应该是urlencode特殊字符.它只适用于Apache 2.2,但我相信.
找到几个参考文献:
> http://www.dracos.co.uk/code/apache-rewrite-problem/
> mod_rewrite with question marks and ampersands (with PHP)
> http://www.mediawiki.org/wiki/Manual:Short_URL/Ampersand_solution