先给结论:当错误页面返回 200 时,不要只看浏览器画面,也不要把“页面能打开”当成正常。正确做法是把响应状态码、响应正文的实际内容、以及该 URL 在站内链接与站点地图中的角色放在一起核对,判断这个 200 是“内容正确但状态写错”,还是“内容本身就是错误页,状态也一起错了”。两种情况的处理顺序完全不同。
核对一致性时,先把问题拆成两种可区分的情况。
判断依据不是页面好不好看,而是该 URL 在站点结构中原本承担什么角色。如果它原本是有效内容页,现在正文还在,优先怀疑状态码配置;如果它原本就不该存在,正文也是错误提示,优先怀疑错误处理逻辑把状态码统一改成了 200。
不要凭直觉猜。可以按下面顺序收集证据,每一步都会影响下一步动作。
HTTP/1.1 200 OK 是否真的出现,同时确认 Content-Type 是 text/html 还是其他类型。若状态码是 200 但内容类型异常,先查服务端路由或重写规则。这里有一个常见误判:请求量或抓取量归零不能单独证明处理正确。它也可能是抓取预算转移、链接被移除、或服务器临时不可用造成的。要结合状态码和正文一起看。
假设一个场景:某个旧活动页已下线,但访问时仍返回 200,正文显示“活动已结束”。这时不要直接删正文,也不要只改文案。
第一步,把该 URL 的响应状态改为 404 或 410。若站点使用服务端路由,检查是否在错误处理分支里统一写了 200;若使用静态托管,检查是否有 404.html 被错误地当作 200 返回。第二步,改完后重新请求该 URL,确认响应头变成 404 Not Found 或 410 Gone,同时正文仍是“活动已结束”。第三步,观察该 URL 在站内链接中的出现位置,把仍指向它的内链改为指向新活动页或直接移除。
这个动作的结果会直接影响下一步:如果状态码改对了,但正文仍被搜索引擎当作有效内容,说明需要进一步检查是否有其他 URL 返回相同正文;如果状态码改对了且正文不再被索引,说明问题只在状态层,不需要动内容。
不是所有返回 200 的错误页都必须改成 404。以下条件成立时,可以保留 200,但必须让正文与状态一致。
另外,robots.txt 的抓取限制不等于可靠的索引移除,站点地图不保证收录。即使把错误页从站点地图移除,也不代表它不会继续被访问。核对一致性时,仍要以响应状态和正文为准。
完成上述核对后,你会得到两种明确结论之一:状态码错、正文对,或状态码和正文一起错。前者只需修正状态码并清理内链;后者需要同时修正错误处理逻辑和正文模板。无论哪种,都要在修改后重新请求同一 URL,确认响应头与正文同时符合预期,再决定是否继续处理其他相似 URL。若多个 URL 出现相同现象,优先检查服务端错误处理分支,而不是逐个页面手动改。