当内链指向的旧地址被服务器返回 200,而页面主体其实是“内容不存在”“已下架”或空壳模板时,先不要急着批量改链或提交删除。更稳妥的结论是:把“内容是否仍承担原链接承诺”与“响应状态是否真实描述该结果”分开核对,并优先修复那些仍被站内多处引用、且用户点进来会直接失去下一步动作的地址。只要该地址已经不再承担原链接承诺,就不应继续以 200 对外表达成功。
误返回成功响应的核心风险不是状态码本身,而是站内链接和用户预期被同时误导。核对时先问三个问题:这个地址过去承诺的是什么内容;现在返回的主体是否还能完成同一任务;站内还有多少处链接把它当作有效目标。若答案分别是“某商品详情”“只剩分类推荐或空模板”“仍有多处导航和正文引用”,那么它属于需要优先处理的对象。若页面已明确告知内容迁移,并给出可继续操作的新目标,且状态仍为 200,则属于可接受的替代页,不必机械改成 404。
这里的选择条件在于“替代是否等价”。等价替代可以保留 200,但要把旧链接逐步改到新目标;不等价替代应改为能表达真实结果的状态,并同步处理内链。代价也很直接:保留 200 能避免短期大量死链,却会让错误目标继续被站内引用;改成 404 或 410 更诚实,但需要承担清理内链和后续监测的工作量。
不要只看浏览器里是否出现页面。至少取得两组证据,再判断一致性。
curl -I 查看响应头状态,再用 curl -s 查看正文开头,确认不是只在特定 UA 或特定路径下才返回错误页。若状态为 200,而正文是错误提示,就属于典型不一致。一个假设例子:某旧专题页被下线,服务器仍返回 200,正文只剩一句“专题已结束”和通用推荐。若站内只有一处历史文章引用它,可先把该链接改到最接近的新专题,再决定是否保留该地址;若导航和多个栏目仍在引用,则应先替换这些内链,再让旧地址返回 404 或 410。这个顺序的差别在于:先改链能减少新的错误访问,先改状态则可能让未清理的入口立刻变成死路。
反例是:旧地址已经变成新内容的稳定入口,且新内容能完成旧链接的核心任务,站内引用也已全部指向新地址。此时继续返回 200 不是错误,而是正常替代。判断标准不是“页面看起来像不像错误页”,而是用户从原链接进入后,是否还能完成原本要做的事。若不能,即使页面设计完整、加载正常,也不应把 200 当作正确状态。
另一个容易误判的情况是:页面主体为空,但服务器返回 200 是因为前端路由或模板兜底。此时不要只凭“页面空白”就断定应改 404。先确认该地址是否曾对外承诺过内容、是否仍被内链引用、是否有等价替代目标。若三者都不成立,才进入状态调整。
完成内容与状态核对后,按以下顺序推进:
这样做的结果会直接影响下一步:如果旧路径仍被内链引用,说明清理未完成,继续改状态只会制造新的死路;如果内链已全部指向有效目标,状态调整才是在修正表达,而不是在掩盖问题。