在服务器访问日志里查死链,核心是核对四个字段:请求时间、请求方法、请求URL、状态码。其中状态码决定“是不是死链”,请求URL决定“哪条链接坏了”,请求方法帮你排除非页面请求的干扰,请求时间则用来判断问题出现多久、是否仍在持续。只盯着状态码而不看URL和方法,很容易把图片缺失、接口报错误当成页面死链。
日志中的状态码字段通常写作 status 或 status_code,是判断死链的第一依据。
判断结果:只有404和410可以较有把握地归入死链;其余状态码要先排除跳转、权限、服务故障,再决定是否处理。
URL字段(常见写法 request_uri、path、url)告诉你具体是哪条地址返回了404。核对时注意三点:
/Page 与 /page、/about 与 /about/ 可能是不同资源。/a?id=1 和 /a?id=2 指向同一页面,避免重复计数。请求方法字段(method)用于过滤:只保留 GET 请求,排除 POST、HEAD、OPTIONS 等非页面访问,否则会把表单提交、接口探测、健康检查的404也算进来。
假设一个例子:日志显示 GET /old-guide 404 出现多次,POST /api/query 404 只出现一次。前者是需要处理的页面死链,后者很可能是接口调用,不该混进死链清单。
时间字段(time、timestamp)用来回答两个问题:这条死链是历史遗留还是最近新增,以及它现在还在不在被访问。如果某URL在近七天日志里仍有稳定请求,说明站内或站外还有链接指向它,处理优先级更高。
来源字段(referer)能帮你找到链接从哪来:
人手有限时,优先处理“近期仍被访问 + 站内来源 + 404”的组合,这类死链既影响体验又容易修复。
处理动作完成后,不要只看一次日志就收工,按下面步骤复查:
如果站点使用robots.txt限制抓取,要清楚它只影响爬虫是否访问,不能替代对死链本身的修复;站点地图提交也不保证收录。这两项都不能当作死链已解决的证据,判断依据仍然是日志里的状态码和实际请求结果。
下一步:从最近一段日志中导出状态码为404和410的记录,按URL去重后统计出现次数,把出现频率最高的前若干条先列入待处理清单,再逐条核对来源字段决定是改链接还是做跳转。