先给结论:当同 IP 下的错误页面返回 200 而内容明显是“未找到”或“出错”时,不能只看状态码就判定处理正确。正确做法是同时核对三件事——响应状态、页面主体是否包含错误语义、以及该 URL 是否仍被允许抓取。三者不一致时,优先按“内容与状态不匹配”处理,而不是急着改状态码。
同一个 IP 反查域名出来的站点,错误页面返回 200 可能对应两种完全不同的情况,处理方向相反。
判断依据不是页面好不好看,而是:这个 URL 对应的资源是否真实存在。存在且可用,保留 200;不存在或不可用,改状态。
不要靠肉眼看页面标题,按下面顺序做,每一步的结果决定下一步。
curl -I 只取响应头,记录状态码和 Content-Type。如果这里就是 200,继续下一步。curl -s 取正文,搜索错误语义关键词,例如“不存在”“已删除”“出错了”“无结果”。命中说明内容与状态矛盾。假设一个例子:某 IP 下 50 个 URL 中,抽样 3 个不存在的路径都返回 200 且正文写着“页面不存在”。此时不要直接批量改状态码,先确认这 3 个是否走同一路由规则——如果是,改一处即可;如果分散在不同子目录,说明是全局兜底逻辑,需要统一处理。
样本成立不代表全站成立。常见例外有两类。
noindex,而不是改 404。还有一点要单独核查:robots.txt 的抓取限制不等于可靠的索引移除。即使你用 robots 挡住了错误页,已经索引的 URL 仍可能保留,且不同搜索引擎对规则的支持情况须分别核查。站点地图也不保证收录,把错误页从站点地图删除只是减少发现路径,不等于让已有索引消失。
改完状态码或内容后,用同一组 URL 重新取响应头,确认状态与内容语义一致。若状态已改为 404 但正文仍显示“推荐内容”,说明只改了状态没改模板,用户和抓取看到的仍是矛盾信息。
验证通过后,下一步才是观察索引变化。请求量或抓取量短期归零不能单独证明处理正确——它也可能是抓取预算转移、规则误伤或监测口径变化造成的。把状态一致性作为主判据,把抓取和索引数据作为辅助信号,两者一致时再进入常规监测,不一致时回到上一步重新核对内容与状态。