先给结论:不能只看状态码。错误页返回 200 时,要同时核对三件事——HTTP 状态、页面实际渲染内容、以及该 URL 在收录工具里的抓取结果是否指向同一份内容。三者中任意两项不一致,就说明状态与内容已经脱节,此时应先修状态,再谈是否保留或改写页面。
404 是显性信号,抓取工具、日志和监控都会直接报出来。200 是隐性信号:抓取端认为拿到了有效页面,收录工具会按正常内容处理,日志里也不会出现异常。问题被推迟到索引和展示阶段才暴露,此时你已经失去了“第一次发现”的时间窗口。
常见的误判来源是软 404:页面内容其实是“不存在”“已下架”,但服务器仍返回 200。另一种是重写规则把不存在的路径统一转发到首页或列表页,状态码 200,内容却与原始 URL 无关。两种情况在收录工具里的表现相似,但处理方式不同。
第一步,用抓取工具请求目标 URL,记录返回的状态码、最终 URL 和响应体前若干字节。第二步,用同一 URL 在收录工具的“网址检查”类功能里查看抓取结果,对比它拿到的状态码与内容摘要是否与你手动请求一致。第三步,用无 JavaScript 的方式请求一次,确认服务端原始响应里是否已经包含错误文案。
这三步的价值在于分离原因。如果手动请求是 200 且内容是错误页,而收录工具显示 404,说明中间有缓存或 CDN 层在改写状态,问题在边缘层而不在源站。如果两边都是 200 且都是错误内容,问题在应用层。如果手动请求 200 但收录工具抓到的是正确内容,可能是收录工具命中了缓存版本,需要先刷新缓存再判断。
假设某站点把 /product/old-id 这类已下架路径重写到列表页,返回 200。手动请求看到列表页,收录工具也抓到列表页。此时若直接保留 200 并改写内容,等于让列表页承担了本应 404 的语义。更稳妥的做法是让这类路径返回 410 或 404,把改写范围限制在确实有等价内容的路径上。这个判断依赖一个前提:该路径没有对应的有效替代内容。如果有,则应做 301 到新地址,而不是返回 200。
保留 200 并改写内容只适用于一种情况:该 URL 有稳定的等价替代内容,且替代内容与原始搜索意图一致。例如旧型号页面被新型号完全取代,可以改写后保留 200,但更规范的做法仍是 301。保留 200 的风险是旧 URL 会持续参与索引,内容却已漂移。
改为 301适用于有明确替代地址、且替代地址内容确实对应用户预期的场景。301 会把权重和索引信号转移到新地址,但前提是替代地址本身可访问、内容完整。若替代地址也是错误页,301 只是把问题转移了一层。
改为 404 或 410适用于没有任何等价内容的路径。410 表示永久移除,语义更明确,但并非所有抓取端都会区别对待 404 与 410。选择哪一种,取决于你是否需要表达“永久”这一层含义,以及站点是否已有统一的错误页策略。
单样本验证通过,不代表规则可以全量套用。常见例外有三类。第一类是带参数的 URL:同一路径加不同参数可能命中不同重写分支,单样本没覆盖到的参数组合仍会返回 200 错误页。第二类是大小写与尾斜杠变体:部分服务器对 /Page 和 /page 处理不同,只测一种写法会漏掉另一种。第三类是分页与筛选路径:它们常被统一重写到列表页,状态码 200,但内容与原始 URL 的语义已经偏离。
因此,在把某条规则推广到全站前,应先按路径模式分组抽样,而不是只测一个 URL。抽样结果里只要出现状态与内容不一致的样本,就说明该规则还不能全量启用。这一步的产出不是“修好了”,而是“哪些模式可以套用、哪些必须单独处理”。
修复后不要只确认状态码变了。要同时确认三件事:目标 URL 返回的状态码符合预期;返回的内容与状态语义一致(404 页面不应包含正常商品信息);收录工具重新抓取后拿到的状态与手动请求一致。三者对齐,才能认为这次修复在抓取层面成立。
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。如果错误页被 robots.txt 屏蔽,抓取端可能看不到真实状态,反而让核对失去依据。核对一致性时,应确保目标 URL 本身可被抓取,否则你验证的只是屏蔽规则,而不是状态与内容的关系。
把这三层对齐之后再决定保留、改写还是退出,才不会让一次状态码修复变成下一轮索引问题的起点。