htaccess删除base 64编码的url符号

时间:2013-07-28 09:41:14

标签: php .htaccess base64

我最近才注意到这一点..

我在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中设置一些默认标准吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

重写规则使用Percent-Escape-Sequences对URL进行解码,并将解码后的字符串再次放入查询字符串,“%2B”现在为“+”,PHP将它们解码为“”(空格) )。

mod_rewrite有一个标志:B

请参阅文档:http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_b