蜘蛛沿着内链在站点里走,遇到打不开的地址是常事。但“打不开”并不是一种状态:404、410、软 404、连接被重置、301 指向一个已经不存在的页面,对蜘蛛来说含义完全不同。分不清这些状态,修复动作就容易做反。
先分清三种“死”
404:暂时找不到
服务器告诉蜘蛛这个地址没有内容,语气是“现在没有”。蜘蛛一般会记录,并在一段时间内回来复查,确认仍然不存在之后,慢慢降低访问频率。404 是可以接受的默认状态,适合内容确实下架、但地址可能还会复用的场景。
410:明确没有了
410 表达的是永久移除。蜘蛛收到之后,通常比 404 更快减少重试,也更容易把这条 URL 从待抓队列里清出去。大批量下架、整个栏目砍掉时,用 410 比用 404 更省抓取额度。
软 404:最难处理的一种
服务器返回 200,页面上却写着“商品已下架”“内容不存在”。蜘蛛看到的是一个正常页面,于是照常抓取、照常处理,只是这个页面没有任何可用的信息。它比真正的 404 更消耗资源,也更难诊断,因为日志里的状态码看起来一切正常。
死链在抓取路径上留下的影响
- 路径断裂:内链指向死链,蜘蛛走到这里就走不下去了,后面的内容要靠别的入口重新发现。
- 重复试探:状态码不明确时,蜘蛛无法判断该不该放弃,只能反复回来确认。
- 额度被占用:抓一个 404 和抓一个正常页面的开销差不多,但前者没有任何产出。
- 信号中断:链接的指向关系失效,原本通过内链传递的信息也跟着断掉。
一个常见的连锁反应
页面 A 被删除,301 到页面 B;页面 B 后来也被删除,直接返回 404。蜘蛛跟着跳一次、两次,最后落空——这条链路在它眼里就是无效跳转。类似情况攒多了,站内链接的可信度会受影响,蜘蛛再来抓取时的判断也会更保守。
处理顺序怎么排
- 从服务器日志里筛出状态码异常、但被反复抓取的 URL,按抓取次数排序。
- 区分是临时下线还是永久移除,分别用 404 和 410,不要一律 301。
- 检查站内还有哪些页面链接到这些 URL,把入口改掉或删掉。
- 从 Sitemap 和分片文件里清掉这些地址,避免继续主动提交。
- 修复后观察一段时间日志,确认重试次数确实在下降。
把大量死链统一 301 到首页,看起来干净,实际上是在批量制造软 404:蜘蛛每次跟过去,看到的都是同一张与它要找的内容无关的页面。
顺手检查的几处
- 站内搜索、筛选、排序这类参数生成的地址,失效后是否留下成千上万条死链。
- 旧版栏目页和标签页,是否还挂在导航或页脚里。
- 正文中的外链和图片链接是否已经失效。
- 移动端与 PC 端是否返回了不一致的状态码。
死链本身不会直接拖垮站点,但状态码含糊、入口不清、残留地址长期存在,会让蜘蛛在同一个地方反复消耗时间。把状态说清楚,把入口收干净,剩下的交给蜘蛛自己判断。