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']
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
  • zhaojiaoyang1
    2017-05-20 12:30:02发表

    嗯?究竟是怎么回事?梁修在一旁喝问道[url=http://www.txooo.com/wenda/]加盟招商[/url] [url=http://www.tbckg.com/]俄罗斯试管婴儿[/url] [url=http://wxjstjm.ce.c-c.com]16锰钢板切割[/url] [url=http://www.tx

  • bbaobao
    2017-04-18 12:00:42发表

    好美啊!狄晴看着眼前之景[url=http://www.cwbol.com/yssp/mysp/]母婴养生常识[/url] [url=http://www.cwbol.com/jbys/lrjb/]老人疾病[/url] [url=http://www.vba.cm/fhdb/3423.html]ABP-378[/url] [url=http://www.

IT技术学习网 - 关于我们 - 联系我们 - 版权声明 - 网站地图