站点长期运行,总会积累一批失效 URL:下架的商品、迁移的栏目、被删除的活动页。这些地址自身已经没有内容价值,但它们仍会消耗蜘蛛的抓取动作,并影响蜘蛛对站点整体状态的判断。处理它们的关键,是让服务器明确表达这个地址不会再回来,而不是含糊地返回一个需要反复确认的状态。
404 与 410 的语义差别
404 表示未找到,语义上偏向暂时不确定;410 表示已永久删除,语义上偏向确定不再提供服务。两者对搜索蜘蛛来说都是失效信号,但 410 的确定性更强。实践中,如果一个 URL 是被永久移除且不会再恢复,返回 410 更利于蜘蛛尽快停止访问;如果只是临时不可用,或者你不确定未来是否会恢复,404 更稳妥。
状态码不要长期摇摆
同一个 URL 一会儿 404、一会儿 200、一会儿 302,会让蜘蛛反复重试。状态码频繁变化往往比单纯返回 404 更消耗资源,因为它让蜘蛛无法判断该地址的最终状态,只能一次次回来确认。
软 404 是最常见的浪费来源
软 404 指服务器返回 200,但页面内容实际上是未找到的提示。用户和蜘蛛看到的都是正常响应,蜘蛛会把它当作有效页面抓取、建立索引,甚至持续回访。
- 内容下线后页面模板仍在,正文位置显示该商品已下架。
- 筛选参数无结果时,返回空白列表页而不是明确的空状态提示。
- 错误页返回 200,仅靠页面文案告知用户出错了。
- 栏目改版后旧地址仍能渲染框架,但核心内容为空。
排查方式是抽样用抓取工具查看响应头状态码,并与页面实际内容比对。只看页面表面是否正常,很容易漏掉这一类问题。
失效 URL 的清理流程
- 从服务器日志中提取一段时间内的 404 与 410 记录,按访问次数排序。
- 区分两类:曾经存在过、有外链或内链指向的旧地址;从未存在、可能来自探测或错误拼接的地址。
- 对第一类判断是否值得恢复。若有等价新地址,用 301 指向新页面;若无,返回 404 或 410。
- 对第二类直接返回 404,但要确认不是内链或 Sitemap 中的错误拼写。
- 清理指向失效地址的内部链接,避免蜘蛛沿着内链反复撞到 404。
- 从 Sitemap 中移除已失效的 URL,不要让提交清单与实际可访问地址长期不符。
什么时候用 301,什么时候用 404
如果旧 URL 有稳定的外链或搜索入口,且新页面内容与之对应,301 是合适的,它能把入口价值传递过去。如果内容彻底消失、没有替代页面,把 301 指向首页或栏目页并不是好做法:蜘蛛会发现大量不同 URL 都跳向同一目标,这类跳转容易被判定为无意义重定向。此时保留 404 或 410 更清晰。
失效 URL 的处理目标不是让所有地址都能打开,而是让每个地址的状态含义单一、稳定,蜘蛛不必反复确认。
观察效果与常见误区
调整之后,可以在日志中观察对应路径的访问次数是否逐步下降。通常需要几周时间才会明显收敛,不必每天盯数据。需要注意两个误区:一是把 404 数量当成负面指标,实际上正常运营的站点都会持续产生 404;二是为了压低 404 数量,把大量失效地址统一 301 到首页,这反而会制造新的问题。
可以把 404、410、301 的比例变化作为一项长期观察项,与抓取总量、有效页面抓取量放在一起看。如果有效页面的抓取动作持续被失效地址分流,说明清理还不彻底;如果失效路径的访问量已经很低,这项工作的收益就基本到位了。