先给结论:当错误页面返回 200 时,百度看到的是一个“正常成功”的响应,它不会因为页面文字写着“404”就把它当成错误页。核对一致性的核心不是看状态码本身,而是同时比对三样东西——HTTP 状态码、页面主体内容、以及该 URL 是否真的应该存在。三者对不上,就是不一致。
常见做法是先抽查几个不存在的 URL,发现它们返回 404,于是判断“错误处理没问题”。但把范围扩大到全站后发现:首页、栏目页正常,某些带参数或旧路径的 URL 却返回 200,页面里却显示“页面不存在”。
这说明抽查样本成立,不代表规则成立。个别样本可能恰好命中正确分支,而规模化后暴露的是另一条分支——比如某个模板、某类路由、某个重写规则单独走了默认成功响应。
出现“页面显示错误、状态却是 200”,通常有两种解释,方向完全不同:
两种解释都会让状态码与内容对不上,但修复位置不同:前者要改错误处理逻辑,后者要改路由或重写规则。如果只按其中一种去改,另一边仍会漏。
要判断属于哪一种,可以看下面几组可观察的差异:
假设例子:某站把不存在的文章路径统一指向列表页以“留住用户”。抽查 3 个 URL 都返回 200 且内容像列表页,于是被当成正常。放量后发现这些 URL 在百度侧被当作有效页面参与展现,用户点进去看到的却不是预期内容。这里的关键证据是“返回正文等于列表页正文”,指向解释二。若改为对不存在的文章返回 404 并展示提示模板,则属于解释一。
建议按下面顺序做,每一步的结果决定下一步:
这里有一个容易误判的点:某个统计归零不能单独证明处理正确。如果抓取量、请求量下降,可能是改对了,也可能是这段时间百度本来就没来抓、或抓取被其他规则挡住。要结合状态码和正文一起看,而不是只看数字变化。
上面的方法成立有一个前提:你能确认这组 URL 确实不应该存在。如果某个 URL 其实应该保留、只是暂时没内容,把它改成 404 反而会丢掉本可保留的入口。
另外要注意:robots.txt 的抓取限制不等于可靠的索引移除,它管的是抓取,不是已收录结果的清理;站点地图不保证收录,它只是提交线索;HTTPS 不保证安全无漏洞或排名。这些都不能替代状态码与内容的一致性核对。
最后,不同搜索引擎对错误响应的处理方式需要分别核查,百度语境下的结论不要直接套到其他引擎。把状态码、正文和 URL 应有状态三者对齐,才是这类问题的判断依据。