搜索抓取

失效 URL 的清理节奏:404、410 与软 404 该怎么选

站点运行一段时间后,失效 URL 会不断累积,用哪种状态码回应会直接影响蜘蛛后续的抓取分配。本文对比 404、410 与软 404 的信号差异,梳理软 404 的常见成因,并给出从日志收集、分类处理到复访观察的清理流程,同时说明什么情况该用 301 承接、什么情况直接放弃。

搜索抓取

失效 URL 的清理节奏:404、410 与软 404 该怎么选

站点运行时间一长,失效 URL 就会慢慢堆积:改版删掉的栏目、下架的商品、早期拼错的参数链接,还有被外部站点引用但早已不存在的页面。蜘蛛迟早会撞上这些地址,而站点如何回应,会影响它后续在你站内分配抓取资源的方式。

404、410 和软 404 的差别

三者的共同点是“这里没有内容”,但对蜘蛛传达的信号强度并不相同。

  • 404:通用地表示页面不存在。蜘蛛收到后会逐步把该 URL 从待抓队列里清理,但因为 404 也可能是临时状态(比如程序异常),它不会立刻彻底放弃。
  • 410:明确表示“永久移除”。信号更干脆,通常比 404 更快让蜘蛛停止回访,适合确认再也不会恢复的 URL。
  • 软 404:服务器返回 200,页面却是“内容不存在”“已下架”这类空壳。蜘蛛要先把 HTML 抓下来才能判断,等于白花一次抓取成本,还容易让大量空页面进入索引。

如果 URL 确实永久废弃,410 更省事;如果只是暂时不可访问,让它正常返回 404 并保留恢复的可能即可。真正要避免的,是软 404 长期存在。

软 404 常见的几种长相

  • 商品下架后仍返回列表页或推荐页,状态码是 200,正文却换成了别的内容;
  • 站内搜索无结果页返回 200,页面结构完整,但只有一句“没有找到相关内容”;
  • 程序出错时返回 200,正文是一片空白或默认模板;
  • 需要登录才能看的内容,对未登录的蜘蛛返回 200 的登录提示页。

这几种情况在用户侧看起来“没报错”,对抓取来说却属于典型浪费。排查时可以拿几个已知失效的 URL,用开发者工具或抓取调试工具核对状态码与正文内容是否一致。

清理失效 URL 的常规流程

  1. 收集:从服务器日志里筛出蜘蛛访问后返回 404、410 的 URL,按访问频次排序。频次高的,往往是外链或站内链还在指向它。
  2. 分类:区分“永久废弃”“暂时下线”“应重定向到新地址”三类,处理方式不同。
  3. 处理站内链:把指向失效 URL 的内链改成有效地址或直接删除。只改状态码而不动内链,蜘蛛下次仍会顺着链接撞进来。
  4. 确认返回码:永久废弃的给 410,暂时下线的给 404,需要承接的用 301 指向最相关的新页面。
  5. 观察复访:处理完一到两周后回看日志,确认这些 URL 的抓取次数在下降,而不是被反复访问。

死链要不要做跳转

301 能承接一部分权重,也会让蜘蛛多走一跳。判断标准是内容有没有对应的替代页:

  • 旧商品被新款替代——跳到新款详情页,用户和蜘蛛都能找到想要的东西;
  • 栏目整体下线,没有对应页面——跳到上级栏目,通常比跳到首页更贴切;
  • 完全不相关或已无替代——直接 410,比强行跳到首页更清爽。
把大量失效 URL 统一 301 到首页,看起来“没有死链”,实际上等于给蜘蛛制造了一批指向同一地址的重复入口,跳转链和锚文本都会变得没有意义。

收敛之后看什么

清理不是一次性工作。内容下架、活动结束、临时页面过期,都会不断产生新的失效 URL。比较稳妥的做法,是把状态码规范和站内链检查放进日常流程:新页面发布前确认链接有效,下架内容时同步决定它是 404、410 还是 301。这样蜘蛛每次来,走的路径都尽量是有内容的页面,抓取效率也会更稳一些。