核对的核心是把“状态码”和“页面实际内容”当成两个独立证据:先确认服务器返回的是 200 还是 404/410,再用正文特征、标题、模板痕迹判断这个 200 是否真的代表有效内容。如果状态码与内容不一致,申请索引只会把错误页面推入候选池,此时应先决定保留、改写还是退出,而不是继续提交。
单个 URL 返回 200 但内容是“未找到”,常见原因是应用层捕获了异常后仍输出正常模板。此时不能直接推断整站都这样。可行的动作是抽样:从同一路由规则、同一内容类型、同一模板中取若干 URL,分别记录状态码与正文首段是否包含目标实体名。如果只有个别样本异常,优先按单页修复;如果同模板下多数样本都异常,说明问题在路由或错误处理层,单页修补会被下一次发布覆盖。
这里有一个容易误判的点:抓取量或请求量下降,并不能单独证明状态码处理正确。它也可能是抓取预算调整、内链减少或服务器响应变慢导致的。要区分这些解释,需要同时看响应时间、内链指向和返回内容,而不是只看一个指标。
适用于页面本来有真实内容,只是错误处理逻辑误伤了它。动作是让该 URL 返回正确状态码并输出完整正文,然后复查同一模板的其他 URL 是否也恢复。如果修正后正文与状态码一致,下一步才是重新申请索引;如果修正后仍返回错误内容,说明问题不在状态码层,继续提交没有意义。
适用于该 URL 有外部链接或稳定访问需求,但原内容已不存在。此时可以把 200 保留下来,但必须让正文提供与查询意图匹配的替代内容,而不是空模板加一句“暂无内容”。判断标准是:用户从搜索结果进入后,能否在首屏找到与标题一致的信息。若不能,保留 200 只是把软 404 伪装成正常页。
适用于内容确实不存在、也没有替代价值的情况。返回 404 或 410 比返回 200 更诚实,但要注意 robots.txt 的抓取限制不等于可靠的索引移除,它只阻止抓取,不保证已收录 URL 消失。若需要加速移除,应结合状态码和页面可见提示,而不是只依赖 robots.txt。
假设某分类页在参数缺失时返回 200,正文却显示“没有找到相关结果”。可以按下面顺序取证:
curl -I 查看响应头状态码,确认是 200 还是 404。如果响应头是 200、正文缺少主体区块、日志显示走了兜底分支,三者同时成立,基本可以判断是应用层错误处理问题,而不是搜索引擎抓取异常。此时修复动作应落在代码分支,而不是反复提交索引申请。修复后再次抽样,若同一模板下异常比例下降,才说明处理生效。
个别样本修复成功,不代表可以照搬到全站。边界在于:不同路由可能由不同服务生成,有的返回静态文件,有的经过前端渲染。前端渲染页面在初始 HTML 中可能只有空容器,状态码却是 200,这时仅靠源码判断会误判。需要区分“初始 HTML 无内容”和“渲染后仍无内容”:前者可能只是渲染方式差异,后者才是内容与状态不一致。
另一个边界是站点地图。站点地图不保证收录,它只提供候选 URL。若把大量软 404 放进站点地图,只会扩大不一致样本的范围。因此在规模化处理前,应先确认状态码与内容一致的 URL 才进入站点地图,而不是把站点地图当作修复工具。
最后,HTTPS 不保证安全无漏洞或排名,它和状态码一致性没有直接因果关系。核对时把注意力放在响应状态、正文特征和渲染结果上,才能决定是保留、改写还是退出,并为下一步提交或移除提供依据。