做网站死链检测时,日志里最该核对的是状态码、请求URL、来源页、User-Agent、请求时间这五个字段。它们能回答三个问题:哪个链接坏了、是谁在请求它、它是否值得优先修复。只看状态码会漏掉大量误判,只看URL又无法判断影响范围。
服务器访问日志和爬虫日志记录的内容不一样。服务器日志通常包含客户端IP、时间、请求方法、URL、状态码、响应大小、来源页、User-Agent;爬虫日志则由搜索引擎或第三方工具提供,字段更少,但会标注抓取频次和抓取结果。做死链检测时,两者要分开核对,不能混在一张表里比较。
适用条件:如果你能拿到原始服务器日志,优先用它,因为404、410、301、302都会如实记录;如果只有爬虫日志,就要接受它只覆盖被爬取过的URL,未收录页面不会出现。
状态码是死链检测的第一判断依据,但不能只看一个数字。
404:页面不存在。若同一URL连续多天出现404,基本可判定为死链。410:页面已永久删除。比404更明确,修复优先级通常更高。301/302:跳转。301是永久跳转,302是临时跳转。若跳转目标本身返回404,链路上仍然存在死链。500/502/503:服务器错误,属于临时故障,不能直接当死链处理,应先观察是否恢复。判断方法:把状态码按URL分组,统计每个URL在最近7天或30天内出现404/410的次数。只出现一次404的,可能是爬虫误抓或临时问题;持续出现的,才进入修复清单。
请求URL告诉你坏的是哪个地址,来源页告诉你用户或爬虫是从哪里点到它的。两者必须一起看。
假设日志中出现:
请求URL: /old-page.html 状态码: 404 来源页: /blog/post-1.html
这说明/blog/post-1.html里有一个指向/old-page.html的链接已经失效。修复时要么更新来源页的链接,要么给旧URL设置301跳转到新页面。
检查项:来源页为空时,说明请求可能来自外部链接、直接输入或爬虫首次发现,不能只改站内链接。来源页是站内页面的,优先修复,因为影响可控且能直接验证。
User-Agent能区分请求来自普通用户、搜索引擎爬虫还是监控工具。不同来源的处理优先级不同:
请求时间用于判断死链是长期存在还是刚刚出现。把时间字段与状态码交叉比对:如果某个URL从某天开始突然大量404,可能是改版、删除页面或配置错误导致,需要结合当时的发布记录核查。
核对完字段后,通常有两种处理方式:
如果旧URL没有任何外部链接和访问量,也可以保留404,不必强行跳转。判断依据是日志中该URL的请求次数和来源页分布,而不是凭感觉决定。
下一步:从日志中导出最近30天状态码为404和410的URL,按请求次数从高到低排序,先处理来源页为站内页面且请求次数最多的那批。