IT技术学习网
IT技术学习网
您的位置: 主页 > 编程技术 > php >

php中apache rewrite自动urldecode|urlencode导致无法$_SERVER['QUERY_STRING']

2014-11-20 18:50 来源: IT技术学习网原创 阅读:

网站中有用到,中文的,已经urlencode过的链接,形如:"http://www.itjsxx.com/tag/c%23%BB%F1%C8%A1%CD%F8%D2%B3%C4%DA%C8%DD"

点击这个url,会经过apache的rewrite,rewrite到真实的php文件中去做处理。

那么问题来了,"c%23%BB%F1%C8%A1%CD%F8%D2%B3%C4%DA%C8%DD"被apache rewrite模块自动urldecode了,变成了真实的"c#获取网页内容"

而#后面的文字,在url中是无效的。使用$_SERVER['QUERY_STRING']只能得到一个字母"c"。这就导致问题了。怎么解决呢?

网上有好多朋友都说,加两次urlencode。在我这个例子中,显然是不行的,因为我的这个url是直接对外提供用户点击使用的,不能再urlencode了,否则用户和搜索引擎以及浏览器都不认得了。

好在还有一个办法,使用$_SERVER['REQUEST_URI']。幸运的是,$_SERVER['REQUEST_URI']的值仍然是rewrite之前的uri的值。至于为什么,问apache吧。。。

$urlencodeurl= $_SERVER['REQUEST_URI'];
list($var1,$var2,$tag)=split ('/', $urlencodeurl);
echo $tag;

最终得到tag的值,就是c%23%BB%F1%C8%A1%CD%F8%D2%B3%C4%DA%C8%DD,而不是之前的“c#获取网页内容”

php中apache rewrite自动urldecode|urlencode导致无法$_SERVER['QUERY_STRING']
转载需注明出处:IT技术学习网 http://www.itjsxx.com/php/apache_rewrite_urldecode.html

评论文章 php中apache rewrite自动urldecode|urlencode导致无法$_SERVER['QUERY_STRING']
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
IT技术学习网 - 关于我们 - 联系我们 - 版权声明 - 网站地图