先给结论:当错误页面返回 200 时,不能只看状态码判断是否修好,也不能只凭页面文字判断是否仍是错误页。正确做法是把同一次请求的响应状态、正文特征和抓取日志放到同一时间窗内交叉核对,三者一致才算证据成立。若三者互相矛盾,优先相信正文与日志,而不是单独一个 200。
常见情形是:某个本应返回 404 或 410 的地址,在百度蜘蛛抓取时返回了 200,但正文仍是“页面不存在”“内容已删除”之类的提示。此时有两种合理解释。
这两种解释对应完全不同的处理动作,所以不能凭直觉选一个。
能区分它们的关键,是看“资源是否真实存在”与“正文是否来自同一份响应”。可以按下面顺序取证。
假设某地址在日志中显示 200,正文含“内容已删除”,而资源表中该 ID 已不存在。这组证据同时指向解释一:状态码没有反映真实结果。反过来,如果资源表中该 ID 存在,正文却仍显示删除提示,则更可能是解释二。
确认是软 404 后,常见有两种做法,各有适用条件与代价。
选择依据不是哪个更省事,而是资源到底存不存在。资源不存在却只改正文,等于把问题推迟到下一次抓取。
先做一次带时间戳的对照请求:固定 URL、固定 User-Agent,记录状态码与正文特征,再与同时间窗日志比对。如果两者一致且都指向错误内容,下一步应修改服务端的状态码逻辑;如果两者不一致,说明日志或缓存层有问题,下一步应先排查缓存与日志采集,而不是直接改页面。
这个动作的价值在于:它把“状态码”和“正文”从两个孤立信号变成一组可对照的证据。只有对照成立,后续修复才有可复查的基准。注意,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,这些都不能替代对状态与内容一致性的核对。
状态码与正文一致,并不自动等于问题已解决。还需要确认:该 URL 是否仍被内部链接或站点地图引用;错误页是否被其他正常页面继承;缓存层是否会在下次抓取时覆盖修复结果。若这些边界未处理,即使单次请求返回正确状态,百度蜘蛛抓取时仍可能看到旧内容。
因此,核对的目标不是拿到一个 200 或一个 404,而是让状态码、正文和日志在同一时间窗内互相印证,并能解释资源是否真实存在。做到这一点,下一步的修复方向才是确定的。