先看响应状态码,再看页面正文,最后看两者是否指向同一件事。错误页返回 200 时,抓取工具会把它当作正常内容继续处理;核对一致性要同时检查状态码、正文特征和后续链接行为,而不是只改一个返回码。
假设某个站点把不存在的商品页统一渲染成“此商品已下架”的提示页,但服务器返回 200。抽查一个链接时,页面有标题、有导航,看上去像正常页;批量抓取后,这些页面却大量进入可索引集合。问题不在单个样本,而在于样本恰好没有触发模板差异。核对时先固定一个判断顺序:状态码 → 正文语义 → 链接与跳转 → 站点地图与内链。这个顺序能让“样本成立、规模化失效”的边界暴露出来。
状态码是给抓取程序看的,正文是给人和索引系统看的。二者不一致时,常见的组合有三种:200 配“不存在”文案、200 配空内容、404 配完整商品信息。核对时不要只看一种信号。
curl -I 或等价方式取响应头,记录状态码、内容类型和是否带缓存头。如果状态码是 200、正文却是错误提示,那么下一步不是立刻改成 404,而是确认这个模板是否被其他正常页面复用。复用模板被误判时,改状态码可能影响正常页;不复用时,才适合按错误页处理。
同一个异常可能有不同原因,证据要能区分它们,而不是只证明“有问题”。可以按下面这组对照来排查:
这组对照的价值在于:它把“改哪里”变成可验证的假设。假设排查后确认是应用层统一返回 200,那么修复动作应落在异常处理逻辑,而不是在反向代理层强行改写所有 200。前者只影响错误页,后者可能误伤正常页。
修复动作完成后,不能只抽一个链接看状态码。应把之前对照出的异常链接重新跑一遍,并记录三项结果:状态码是否变为 404 或 410、正文是否仍保留错误提示、内链和站点地图是否还指向这些地址。三项都对齐,才说明内容与状态一致。
这里有一个容易忽略的边界:robots.txt 的抓取限制不等于可靠的索引移除。即使把错误页放进 robots.txt 禁止抓取,已经进入索引的 URL 仍可能以其他方式出现。站点地图也不保证收录,它只表达希望被发现;把错误页从站点地图移除是必要动作,但不能替代状态码修复。HTTPS 同样不保证安全无漏洞或排名,它只解决传输层的一部分问题,与错误页状态无关。
当样本成立但规模化出现例外时,最实用的做法是保留一份例外清单:记录哪些链接返回 200 却带错误文案、哪些返回 404 却带完整内容、哪些经过重定向后状态语义丢失。清单不是一次性任务,它应随模板和路由变更更新。下一次抓取规则调整时,先用这份清单验证,而不是重新抽样。这样,内容与状态的一致性才有可追踪的依据,而不是依赖单次抽查的偶然结果。