我最近才注意到这个问题。我使用urlencode对base64编码进行编码,以便通过url发送加密图像链接,因此在url中有一些%2B,即+符号。
当我通过php中的GET访问这个url时,需要将%2B转换回+符号。
当我通过php中的GET访问这个url时,需要将%2B转换回+符号。
image.php?q={encoded}
当我使用 $_GET['q'] 时,我会得到正确的数据,而无需进行 URL 解码,例如 %2B 将被翻译为 + 等等...
但是最近我写了一个 .htaccess 文件,像这样:
RewriteRule ^image/(.*)?$ image.php?q=$1 [NC,L]
当我获取 $_GET['q'] 数据时,所有的 %2B 都被替换成了空格等字符,所以我需要运行
str_replace(' ','+',$_GET['q'])
然后解密以获取图像链接..
这是为什么发生的?我需要在htaccess中设置一些默认标准吗?非常感谢帮助!