结论先行:当错误页面返回 200 时,不能只看状态码判定“链接正常”,应把响应体内容特征与状态码放在同一份证据里比对;只有内容明确是错误提示、状态码却是 200,才属于需要处理的不一致。若页面本身是软 404 之外的正常聚合页或占位页,200 反而是合理的,此时结论失效。
一种是被删内容仍返回 200,正文却写着“内容不存在”或只剩导航与推荐位;另一种是旧系统把错误模板套在正常路由上,正文仍有可读信息。前者是状态与内容矛盾,后者只是模板复用。判断依据不是页面好不好看,而是正文是否提供了该 URL 原本承诺的信息。
假设某旧产品页下线后,服务器仍返回 200,正文只剩“该产品已停止服务”和一组无关推荐。这个响应在状态码层面是成功,在内容层面是终止信号。把它当作有效页面继续保留在导航里,会让检查工具报告“全部正常”,掩盖真实的退出需求。
核对时至少取三样东西:HTTP 状态码、正文中稳定的错误短语、页面标题或主标题。三者组合才能区分“真正常页”“软 404”“硬 404”。如果正文含“已下线”“不存在”“已迁移”等短语,而状态码为 200,就应标记为待处理,而不是通过。
这里的关键动作是:把命中终止短语的 URL 单独导出,再逐条打开确认。这个动作的结果会决定下一步——如果确认是软 404,就进入退出或重定向决策;如果只是空渲染,就回到模板排查,而不是改状态码。
如果该 URL 本来就是一个聚合页、专题页或说明页,正文出现“已停止服务”只是页面主题的一部分,那么 200 与内容并不矛盾。此时把状态码改成 404 反而会移除仍有价值的入口。反例成立的条件是:页面仍在承担导航、说明或分流作用,且没有任何“原内容已不存在”的承诺被打破。
因此,判断前要先确认这个 URL 的原始用途。原始用途是内容详情页,终止短语就是矛盾信号;原始用途是说明页,终止短语只是正文信息。两者不能共用同一套处理规则。
旧内容退出时,常见做法是整站重定向到首页或统一错误页。若原页面仍有部分信息价值,更稳妥的做法是保留一个说明页,把状态码设为 200,并在正文中明确当前状态与替代入口。这样做的代价是:检查工具不会再把它标为死链,你需要另建一份“已退出但仍保留”的清单来跟踪。
如果选择直接返回 404 或 410,则要接受该 URL 从导航和站点地图中移除后的可见性变化。站点地图不保证收录,robots.txt 的抓取限制也不等于可靠的索引移除,所以退出动作应和内容、内链、站点地图一起核对,而不是只改一个状态码。
完成一轮核对后,至少记录 URL、原始用途、状态码、命中的终止短语、最终处理方式。下一次复查时,用同一组字段比对,才能看出是状态码变了、内容变了,还是判断标准变了。若某条 URL 的请求量或抓取量归零,也不能单独证明处理正确,因为缓存、内链移除或抓取预算变化都可能有同样表现。
把这份记录交给负责退出决策的人,比只给一份“死链数量”更有用,因为它同时说明了哪些链接该断、哪些内容该留,以及判断依据是否仍然成立。