typecho 不能正常接收百度引流的解决方案
发布于 作者:苏南大叔 来源:程序如此灵动~
最近苏南大叔仔细查看了博客的服务器日志,发现了一个令人震惊的事实。那就是,某些情况下,百度带来的流量,居然访问到了404页面!可以想像的出,访客们看到苏南大叔设置的404页面时的悲伤表情。但是!页面是真实存在的!并没有404!
据苏南大叔推测,这个应该是某一版百度搜索的bug!据猜测,应该是固化在第三方代码中的那种百度代码的bug所导致的。而且似乎,比重还是不小的。欲知详情,请阅读下面的内容!
症状描述
下面截图一张,展示一下,这个404页面的形成过程。
在图中我们可以看到,这个由百度带来的流量,错误的添加了参数到苏南大叔的html页面上,但是却没有拼接出加参数所必须的?符号。这个是不能接受的事情,html页面由此就404了。真心是一个由问号引发的大bug啊。
解决方案
苏南大叔临时写了个小的poc,放在了index.php里面,如果发现,我的html文件后面直接跟着&符号的时候,就给它替换成?符号。问题临时得到解决。
$uri=trim($_SERVER["REQUEST_URI"]);
if(!strstr($uri,".html&")===FALSE){
header("Location:".str_replace(".html&",".html?",$uri),301);
exit();
}深入探讨
仔细看症状,发生这种事情的大多数情况下,百度给html文件,生硬添加的参数都是类似&wd=&eqid=的。所以,寻找这种情况的发生场景就是重点了。根据agent信息描述,这种情况,可能有较大几率发生于firefox43中,但是苏南大叔专门下载了一个firefox43,并没有出现这种状态。聪明的读者,您知道,这种怪异的现象,到底是怎么产生的么?
更多typecho相关经验文字,请点击:


