结论先行:状态码和页面内容不一致时,不能只改其中一项就收工。正确做法是先确认这个错误页面是“应该被索引的真实错误页”,还是“本不该存在的软 404”。判断依据不是页面长得像不像错误页,而是它对用户和抓取工具是否给出同一套信号:HTTP 状态码、页面可见文案、内部链接指向,以及是否出现在站点地图里。四者一致,才能进入下一步;不一致,就先修信号,再谈收录。
同一个现象——访问一个已失效地址,浏览器显示“页面不存在”,但响应头是 200——背后通常有两种完全不同的成因,处理方式相反。
两种解释都会表现为“状态码与内容矛盾”,但一个要改状态码,一个要改内容或链接结构。先分清是哪一种,再动手。
只查一次响应头不足以定性。可以按下面顺序取证,每一步的结果都会收窄下一步的选择。
200 OK,而页面正文明确写着“该页面不存在”“内容已删除”,那更接近解释一。如果正文是“暂无内容”“正在完善”,更接近解释二。这四步里,第 1 步和第 2 步最关键:状态码说明服务端意图,链接位置说明站点意图。两者矛盾时,先以页面真实语义为准,再统一信号。
假设某站点有一批商品下架页,模板统一返回 200,页面文案是“该商品已下架”。运维把模板改成返回 404。改完后,这些地址不再被当作正常内容,但站内分类页里仍然保留着指向它们的链接。
此时会出现新的矛盾:链接还在推荐一个已经声明为“不存在”的地址。下一步动作应当是清理这些内部链接,或把它们指向同类在售商品页。如果不清理,抓取工具仍会反复访问这些 404 地址,浪费抓取预算,用户点击后也会直接撞上错误页。这个例子的数字只是说明比较方法:改动前统计这批地址的数量和入口来源,改动后再统计一次,看入口是否减少,而不是只看状态码是否变化。
把判断落到具体动作上,可以按以下顺序执行,每完成一步再决定是否继续。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,它只约束抓取,不保证已收录地址从结果中消失;站点地图也不保证收录,它只是推荐入口。因此不要用屏蔽抓取或提交站点地图来代替状态码修正。
并非所有 200 的错误页都必须立刻改成 404。如果该页面只是短暂维护、预计很快恢复,并且页面明确告知用户“稍后回来”,同时没有把它当作长期入口推荐,那么保留 200 并监控恢复时间是成立的。反过来,如果页面已经确定不再提供内容,或它正被站点地图和内部链接持续推荐,就应当修正状态码并清理入口。判断标准是“这个地址未来是否还会有真实内容”,而不是“现在改起来麻烦不麻烦”。