我最近才注意到这一点..
我在base64编码上使用urlencode在网址上发送加密的图片链接,因此网址中有一些%2B的ie +符号。
当我通过PHP中的GET访问url时
image.php?q={encoded}
当我执行$ _GET ['q']时,我得到正确的数据而不对其进行urldecoding,即%2B将被翻译为+ etc ....
但我最近写了一个像这样的htaccess
RewriteRule ^image/(.*)?$ image.php?q=$1 [NC,L]
当我访问$ _GET ['q']数据时......所有%2B都被空格等替换....所以我需要运行
str_replace(' ','+',$_GET['q'])
然后解密以获取图片链接..
知道为什么会这样吗?...我需要在htaccess中设置一些默认标准吗?任何帮助表示赞赏。
答案 0 :(得分:1)
重写规则使用Percent-Escape-Sequences对URL进行解码,并将解码后的字符串再次放入查询字符串,“%2B”现在为“+”,PHP将它们解码为“”(空格) )。
mod_rewrite有一个标志:B
请参阅文档:http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b