我有一个非常奇怪的问题
好的,问题就是这样假设我有这个网址
如果我base64_encode($_GET['url'])
结果就是这个
aHR0cDovL3d3dy5maWxlc2VydmUuY29tL2ZpbGUvdkVwQnlwMy9XRlMwMTBDLnBhcnQzLnJhcg
==
应用此重写条件后
RewriteEngine On
RewriteBase /
RewriteRule ^file-(.*)-(.*)\.html$ index.php?file=$1&url=$2
网址就像这样
现在如果我做base64_encode($_GET['url'])
结果就是这个
aHR0cDovd3d3LmZpbGVzZXJ2ZS5jb20vZmlsZS92RXBCeXAzL1dGUzAxMEMucGFydDMucmFy
**请注意,如果没有编码打印,$ _GET ['url']的值在两种情况下完全相同!
在使用重写后,如何使用相同的字符串给出不同的结果?**
有谁知道这个问题是什么
答案 0 :(得分:1)
您正在重写URl,因此第二个-
之后的部分存储在url
参数中。因此,在第二种情况下,您会收到url
= http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar.html
。就像你以前一样。
您编码的内容标有粗体:
使用第一个网址
http://www.example.com/?file=WFS010C.part3.rar&url=的 http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar 强>
使用第二个URL,您将其重写为
http://www.example.com/index.php?file=WFS010C.part3.rar&url=的 http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar 强>
更新您的第二个base64_encoded网址正在解码为http:/www.fileserve.com/file/vEpByp3/WFS010C.part3.rar
。请注意http之后的单/
。您确定第二个网址中没有拼写错误吗?
答案 1 :(得分:1)
您可以使用base64_decode
查看它们是否相同。
事实上:
第一个是 的 http://www.fileserve.com/file/vEpByp3/WFS010C.part3.rar 强>
第二个是 的 HTTP:/www.fileserve.com/file/vEpByp3/WFS010C.part3.rar 强>
你可以看到,它们并不相同。
答案 2 :(得分:0)
首先,您需要对“url”参数进行urlencode。我猜测参数由于其中的“/”之类的无效字符而无法正确解析。