什么是死链?顾名思义就是死了的链接,就是无法打开的链接地址。当网站死链数据累积过多时,并且被展示到搜索结果页中,对网站本身的访问体验和用户转化都起到了负面影响。另一方面,百度检查死链的流程也会为网站带来额外负担,影响网站其他正常页面的抓取和索引。
以往网站SEO优化日常工作中,SEOer会通过爱站工具通过模拟抓取从整站中筛选包含404状态的链接并整理成列表进行手动提交,但这显得非常没有效率。张戈博客提供了另外一种更简便的方式,即从Nginx日志分析并生成能提交到搜索引擎的死链文件的shell脚本。
功能介绍
每天定时分析网站前一天的 nginx 日志, 然后提取状态码为 404 并且 UA 为百度蜘蛛的抓取路径,并写入到网站根目录下的 death.txt 文件,用于提交百度死链。
代码使用
#!/bin/bash
#Desc: Cut Nginx Log and Create Death Chain File
#①、初始化变量:
#定义access日志存放路径
LOGS_PATH=/home/wwwlogs
#定义蜘蛛UA信息(默认是百度蜘蛛)
UA='+http://www.baidu.com/search/spider.html'
#定义网站域名(需要先给相应的网站以域名形式配置了nginx日志,比如zhangge.net.log)
DOMAIN=moewah.com
#定义前一天日期
DATE=`date +%Y-%m-%d -d "1 day ago"`
#定义日志路径
logfile=/home/wwwlogs/moewah.com_${DATE}.log
#定义死链文件存放路径
deathfile=/home/wwwroot/moewah.com/death.txt
#定义网站访问地址
website=https://www.moewah.com
#②、Nginx日志切割
mv ${LOGS_PATH}/${DOMAIN}.log ${LOGS_PATH}/${DOMAIN}_${DATE}.log
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#可选功能: 自动删除30天之前的日志,可自行修改保存时长。
cd ${LOGS_PATH}
find . -mtime +30 -name "*20[1-9][3-9]*" | xargs rm -f
#③、网站死链生成(百度专用)
#分析日志并保存死链数据
for url in `awk -v str="${UA}" '$9=="404" && $15~str {print $7}' ${logfile}`
do
grep -q "$url" ${deathfile} || echo ${website}${url} >>${deathfile}
done
请根据自己的情况进行修改,并将代码保存为 shell 脚本,比如 deathlink.sh,然后如下建立任务计划:
#执行如下命令编辑任务计划
[root@Mars_Server ~]# crontab -e
#每天凌晨1点执行此脚本(注意脚本的实际路径)
0 1 */1 * * /root/death.sh >/dev/null 2>&1
#按下ESC,然后键入 :wq 保存并退出
执行后,系统会每天执行脚本,将昨天的百度蜘蛛爬到的 404 路径保存到网站根目录下的 death.txt,以备百度死链抓取工具前来抓取。可以浏览器访问看看内容,比如:
https://www.moewah.com/death.txt
然后立即前往提交这个死链文件即可。
注意事项
①、如果你的 nginx 服务 并没有配置相应的 access 日志,请自行在 server 下添加所需网站的 access 日志,否则脚本无法使用;
②、脚本适用的 access 日志格式如下:
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';
相关推荐
- 文章页面关键词布局的五大要点仍然有效!
- 网站配置 Vary:User-Agent 标头方法介绍
- 移动端适配方案解析,轻松提升手机页面排名!
- 减少网页相似度提升排名的网站SEO优化技巧
- H1标签放在a标签的内外,哪种更利于SEO?
- 代码适配与自适应网站,谁更利于SEO?
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/236.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。