新买域名的网站辛辛苦苦正式上线了,百度不仅来得少而且还老是盯着以前网站的死链抓,而且自己还不知道人家的网站有哪些死链在这个域名上,估计很多站长朋友都为此烦恼过,经过一下午的折腾,小弟终于琢磨出 “根据日志返回404状态码自动制作死链”,可以加快百度删除死链的速度,对优化有点好处。其实日志中404状态码大多来自于各个搜索引擎。每天被各个搜索引擎抓取上千次,死链数量可观,当然,这是个悲剧。下面是日志情况抓取成功的日志:123.125.71.105 - - [15/Jul/2013:13:43:42 +0800] GET /dianshiju/dalu/huofojigong3/player-0-38.html HTTP/1.1 200 8074 - Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) -抓取失败的日志:220.181.108.156 - - [15/Jul/2013:13:37:14 +0800] GET /dianshiju/oumei/yuhaiyixindiwuji/ HTTP/1.1 404 6329 - Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) -1,环境要求,这是基于linux的命令,所有必须是linux的服务器或vps,而且还得开启日志。利用系统带有crontab(计划任务用的),awk(处理文本的),grep(搜索字符的)命令。部分服务器有可能没有装crontab,yum install crontabs 安装。2,操作步骤ssh上服务器,输入命令crontab -e进入计划任务编辑界面编辑计划任务,下面以我的计划任务为例介绍怎么做。为了安全,我把日志路径和网站根目录路径改了,谢谢理解。15 * * * * /bin/grep " 404 " /rizhilujing/www.sichuanweishi.com_access.log > /rizhilujing/123.log //每个小时15分取出日志中包含“ 404 ”的内容重定向到123.log中,注意404前后有空格,避免其他包含404的文件名被取出。16 * * * * /bin/awk '{if(match($0,/GET.*HTTP/))print substr($0, RSTART, RLENGTH);}' /rizhilujing/123.log > /rizhilujing/456.log //每个小时16分取出GET和HTTP之间的内容到456.log中17 * * * * /bin/sed -r 's/ HTTP$//' /rizhilujing/456.log > /rizhilujing/789.log //每个小时17分去掉456.log每行后面的HTTP,然后重定向到789.log18 * * * * /bin/sed -r 's/GET /http:\/\/www.sichuanweishi.com/' /rizhilujing/789.log > /wangzhangenmulu/123.txt //每个小时18分把789.log每行开头的"GET "替换成自己的网址,注意有反斜杠,然后重定向到网站根目录下的123.txt中,只有添加到网站目录下才能被百度蜘蛛读取。这个123.txt就是死链文件,就这玩意提交给百度,然后每小时更新,百度绝对会每个小时准时来抓取你的死链文件。19 12 * * * /bin/echo "" > /rizhilujing/www.sichuanweishi.com_access.log //最后这句是每天的12点19分清空日志,你也可以写其他时间,然后按时间重命名日志文件也行。再次提示,需要开通日志,需要crontab计划任务服务开启service crond status 命令可以查看开启计划任务没有,可以输入命令chkconfig crond on让crontab开机自动开启。crontab -l可以查看计划任务列表。比如我的