当错误页返回 200,而页面内容仍是“页面不存在”或“内容已下架”,日志里会同时出现“抓取成功”和“无有效内容”两种事实。核对一致性不能只看状态码,也不能只看正文,而要把日志中的响应状态、页面实际渲染出的主内容、以及该 URL 在站内应承担的角色放在一起比对。若三者指向不同结论,先以“内容是否可被独立理解”为优先判断,再决定是改状态码、改内容,还是保留现状并记录例外。
多个角色对同一事实理解不同,通常不是谁看错了,而是各自观察的层次不同。运维看日志中的 200,认为请求被正常处理;编辑看页面,认为这是错误提示;SEO 看抓取频次,认为该 URL 仍被当作有效地址。要把分歧转成可核对项,先固定三个观察点:
如果日志显示 200,但页面主内容明确告诉用户“没有这个页面”,那么传输层与内容层已经冲突。此时不要急着把状态码改成 404,而要先确认这个 URL 是否仍有保留价值:它是否被其他页面链接、是否出现在站点地图、是否承担旧链接跳转前的承接职责。只有先确认职责,后续动作才不会误伤。
条件一:该 URL 仍需承接旧链接或外部入口。如果这个地址过去被广泛引用,直接返回 404 会让用户和抓取程序同时遇到死路。此时更合理的做法是保留一个明确的过渡页,但让内容与状态一致:页面主内容应说明“原内容已迁移”,并提供可用的新地址;状态码可以保持 200,但必须避免把该页伪装成原内容。实施动作是:在日志中筛出该 URL 的抓取记录,核对每次抓取返回的状态码与响应体长度;若响应体长度与正常内容页接近,却只包含提示文字,说明它更接近软错误页。下一步应把该页加入人工核对清单,而不是直接批量改状态码。
条件二:该 URL 已无保留价值,且没有站内入口。如果它既不被导航链接,也不在站点地图中,且内容已彻底下线,那么继续返回 200 只会让日志中的“成功”失去区分度。此时应让它返回 404 或 410,并确保页面正文不再提供误导性操作。实施动作是:先取一份当前响应头与正文快照,记录修改前状态;修改后再次触发抓取,观察日志中该 URL 的状态码是否变化。若状态码变化后抓取频次下降,这只能说明抓取行为改变,不能单独证明索引已移除,因为索引移除还受其他因素影响。
把日志、页面和职责三者对齐,可以按以下顺序操作:
这些动作的结果会直接影响下一步:如果移除入口后,日志中该 URL 的抓取频次明显下降,说明抓取程序已减少访问;但这仍不能证明索引已移除,因为索引状态需要另查。若响应体大小没有变化,而正文仍是错误提示,则应优先修正内容与状态码的一致性,而不是继续观察抓取频次。
有些错误页返回 200 并非配置失误,而是产品设计的一部分。例如,单页应用在客户端路由未匹配时,服务器仍返回 200,再由前端渲染“未找到”。这种情况下,日志中的 200 与用户看到的错误提示并不矛盾,但需要确认前端是否向抓取程序暴露了足够明确的信号。若无法确认,至少应保证页面主内容不冒充原内容,并避免在站点地图中继续列出该地址。
另一个例外是 robots.txt 的限制。即使日志显示某 URL 被频繁抓取,robots.txt 中的禁止规则也不等于可靠的索引移除;它只限制抓取,不保证已收录内容消失。同样,站点地图不保证收录,HTTPS 也不保证页面安全或排名。核对一致性时,应把状态码、正文和职责作为主证据,把抓取频次、站点地图和 robots.txt 作为辅助线索,分别核查,不混为一谈。
假设某分类页下线后,服务器仍返回 200,正文只显示“暂无内容”。日志中该 URL 持续被抓取,响应体大小与正常分类页接近。此时更稳妥的选择是:先移除站内链接和站点地图中的该地址,再把状态码改为 404,并保留一份修改前后的对照记录。若修改后抓取频次下降,只能说明抓取行为变化,不能直接推断索引已移除。下一步应继续核对页面是否仍能通过其他入口到达,以及是否有必要保留一个指向新分类的过渡页。