先给结论:当错误页面返回 200 时,核对重点不是“状态码对不对”,而是把同一 URL 的响应状态、可见正文和站点内部对它的描述放在一起比对。三者指向同一事实,才算一致;只要有一项在说“这是正常内容”,就不能把它当成已处理的错误页。常见分歧是:开发说“页面已经返回正常了”,SEO 说“搜索结果里还是错误页面”,运维说“日志里全是 200”。三个说法可以同时为真,因为 200 只说明请求被成功处理,不说明处理的是正确内容。
一个不存在的商品页、已下架的活动页或参数拼错的筛选页,如果服务器统一回落到某个兜底模板,并且 HTTP 状态写成 200,就会出现两种解释。
两种解释都会让抓取工具看到 200,但后续动作完全不同。第一种要检查提示是否清楚、是否应该改为 404 或 410;第二种要先修路由和异常处理,再谈收录。把分歧转成可核对项目,就是分别取证,而不是继续争论“到底算不算错误页”。
用命令行或浏览器开发者工具查看该 URL 的响应头,记录状态码、内容类型和是否有跳转。若返回 200,继续看正文长度和标题。一个原本有商品详情的 URL,如果现在正文只剩几十个字且没有商品名,这本身就是不一致的证据。不要只看状态码一项就下结论。
把浏览器禁用 JavaScript 后再看一次,再开启 JavaScript 看一次。若禁用后正文为空、开启后才出现“内容不存在”,说明提示依赖脚本渲染。此时要确认抓取端能否拿到同样内容,否则不同角色看到的页面并不相同。记录两次看到的标题、首屏文字和主要链接,作为可复查的对照。
检查该 URL 是否仍出现在站点地图、分类列表、站内搜索建议或相关推荐中。若页面正文说“已下架”,但站点地图仍把它列为可访问内容,这就是第三层不一致。此时即使状态码是 200,也不应继续把它当作正常内容提交。
假设某站有一个已停售的商品 URL,运维看到日志里是 200,开发看到模板正常渲染,SEO 看到搜索结果里标题仍是商品名。可以按下面方式做一次假设性对照,数字仅用于说明比较方法,不代表任何真实站点数据。
这组证据指向“配置遗漏”而不是“有意软着陆”:如果是有意保留,至少应把该 URL 从站点地图和站内搜索入口中撤下,并在正文里给出明确的替代分类链接。下一步动作是先修站点地图和站内入口,再决定状态码是否改为 404 或 410。改完后重新取一次响应和正文,确认三层描述一致,而不是只看状态码变化。
抓取量下降、某个统计归零、搜索结果里暂时看不到该 URL,都不能单独证明错误页已经处理正确。抓取量下降也可能来自抓取预算调整、站点整体改版或外部链接变化;搜索结果消失也可能只是临时波动。要证明一致性,仍要回到响应状态、可见正文和站点内部描述这三层。
另外,robots.txt 的抓取限制不等于可靠的索引移除。若用 robots.txt 挡住错误页,抓取端可能不再访问,但已索引的 URL 未必因此消失。站点地图也不保证收录,它只是提交候选,不构成状态码或内容一致性的证明。涉及不同搜索引擎时,支持情况和处理结果需要分别核查,不能用一个引擎的表现推断另一个。
当多个角色对同一 URL 有不同理解时,按以下顺序执行,可以让下一步有依据。
这套顺序的关键在于:状态码只是三层中的一层,正文和站点描述同样要能对上。只要有一层还在把错误页当正常内容,后续的提交和观察都会建立在错误前提上。