发现死链异常时,先不要急着全站扫描。更有效的做法是:从异常入口页出发,按站内链接层级向外追踪,结合服务器日志和抓取工具的报告,划定一个最小可疑范围,再逐步向外扩展。影响范围通常由三个因素决定:异常链接出现在哪些页面、这些页面被多少入口指向、以及死链返回的状态码类型。
很多人遇到死链,第一反应是跑一次全站爬取,拿到一份 404 列表,就认为范围已经确定。这个做法的问题在于:全站扫描只能告诉你“当前有哪些 URL 返回错误”,不能告诉你“哪些页面因此受到牵连”。
一个 URL 返回 404,本身只是终点。真正影响范围的是指向它的内链和外部链接。如果某个死链只出现在一个孤立的旧页面里,影响范围几乎为零;如果它出现在导航、面包屑或全站页脚中,那么所有页面都会产生一个指向死链的链接,影响面立刻放大。全站扫描报告通常不会自动区分这两种情况,需要你手动判断。
确定影响范围的正确顺序是从已知异常点向外扩散:
判断结果分三种情况:如果死链只被低权重、无入口的旧页面引用,影响范围可视为局部;如果被栏目页或列表页引用,影响范围是該栏目;如果被全站模板引用,影响范围是全站。这里的“权重”不需要精确数值,用“是否有导航入口、是否在站点地图中、是否有外部链接指向”就可以做粗略分级。
爬取工具报告的是“链接存在且目标返回错误”,服务器日志能补充另一层信息:这些死链是否真的被用户或搜索引擎访问过。查看日志中目标 URL 的请求记录,重点关注:
如果日志中某死链从未被请求,说明它目前只是潜在问题,尚未实际影响抓取或用户体验;如果被频繁请求且来源集中在某几个页面,影响范围就落在这些来源页面上。注意区分“可能原因”和“已经定位的原因”:日志里出现 404 请求,只能说明该 URL 被访问过,不能直接推断是它导致了排名下降或流量变化,还需要结合页面层级和入口情况判断。
执行范围判断时,逐项核对以下内容:
<nav>、页脚或全站模板中;如果是,影响范围按全站处理。假设某项目在改版后发现产品详情页模板中的“规格参数”链接全部指向一个已删除的页面。用爬取工具扫描会得到大量 404,但影响范围不是“所有产品页”,而是“所有使用该模板且包含规格参数模块的产品页”。进一步检查发现该模块只在部分品类中启用,实际受影响页面数量远小于扫描报告中的 404 总数。这个例子说明:确定影响范围的关键是找到链接的生成源头,而不是统计错误 URL 的数量。
确定范围后,先修复影响面最大的那一层,比如全站模板中的死链,再处理栏目级和单页级。修复后重新用同一爬取路径检查,确认该范围内不再出现相同错误,并观察服务器日志中对应 URL 的请求是否转为 301 或 200。如果异常仍然存在,把范围向外扩一层,重复同样的追踪步骤。