网站存在大量死链,将影响网站的站点seo和评级,通过对网站access日志切割(同时自动删除7天前的日志),然后对日志进行分析自动生成死链文件,在百度等站长平台设置死链文件更新周期,定期读取并删除死链
在服务器之地给你目录添加death.sh文件,编辑内容如下:
1#!/bin/bash 2#Desc: 日志切割、自动生成死链文件 3#Blog: https://jszoo.com 4 5#日志切割 6 7#定义日志路径 8LOGS_PATH=/var/log/nginx 9#获取昨天日期 10YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) 11#按天切割日志 12mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log 13#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败. 14kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'` 15#删除7天前的日志 16cd ${LOGS_PATH} 17find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f 18 19#生成死链文件 20 21#定义蜘蛛UA信息(默认是百度蜘蛛) 22UA='+http://www.baidu.com/search/spider.html' 23#定义access日志路径 24logfile=/var/log/nginx/access_${YESTERDAY}.log 25#定义死链文件存放路径 26deathfile=/www/blog/web/death.txt 27#定义网站访问地址 28website=https://htmler.cn 29#分析日志并保存死链数据 30for url in `awk -v str="${UA}" '$9=="404" && $15~str {print $7}' ${logfile}` 31do 32 grep -q "$url" ${deathfile} || echo ${website}${url} >>${deathfile} 33done 34
1#编辑任务计划 2crontab -e 3# 添加任务(每天凌晨1点执行),ps: /root/death.sh 修改为步骤一脚本真是路径 40 1 */1 * * /root/death.sh >/dev/null 2>&1 5# ESC,输入 :wq 保存并退出 6
登录百度站长平台,在死链提交栏目添加死链地址,如:https://jszoo.com/death.txt