3

我最近才注意到这个。。

我在 base64 编码上使用 urlencode 来通过 url 发送加密的图像链接,因此 url 中有一些 %2B 即 + 符号。

当我在 php 中通过 GET 访问 url

image.php?q={encoded}

当我执行 $_GET['q'] 时,我得到了正确的数据,而无需对其进行 urldecoding,即 %2B 将被翻译为 + 等....

但我最近写了一个像这样的htaccess

 RewriteRule ^image/(.*)?$ image.php?q=$1 [NC,L]

当我访问 $_GET['q'] 数据时...所有 %2B 都已替换为空格等...所以我需要运行

str_replace(' ','+',$_GET['q']) 

然后解密得到图片链接..

知道为什么会这样吗?...我需要在 htaccess 中设置一些默认标准吗?感谢任何帮助。

4

1 回答 1

1

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

mod_rewrite 对此有一个标志:B

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

于 2013-07-28T13:35:16.280 回答