站点里最容易被忽略的抓取消耗,往往不是服务器宕机,而是一批返回 200 却没有有效内容的页面。搜索蜘蛛很大程度上依靠状态码判断一个 URL 是否值得继续访问,当空页、跳转页、错误页都被包装成 200 时,抓取频次会被持续消耗在无价值的地址上,真正需要更新的页面反而排到后面。
软 404 的本质:内容没了,状态码还在说“正常”
软 404 指页面已经不存在或没有实质内容,服务器仍返回 200。它不会立刻让 URL 从索引中退出,却会让同一批地址被反复抓取、反复判定为低价值,形成长期浪费。相比一个干脆的 404,软 404 的排查成本更高,因为它在外观上完全正常。
- 商品下架后返回 200 的“该商品已售完”占位页;
- 搜索结果为空时仍渲染 200 的列表模板;
- 分页越界(如 page=999)返回 200 的空白列表;
- 参数错误的详情页悄悄回退到某条通用内容;
- 内容被删除后 302 跳首页,而不是返回 404 或 410。
排查顺序:先看日志,再改模板
建议从日志抽样的原始数据开始,而不是先动模板逻辑,否则很难知道问题覆盖面有多大。
- 从服务器日志或抓取日志中筛出返回 200、响应体明显偏小的 URL,按目录归类,看是否集中在某类模板。
- 用 curl -I 核对状态码,再用 curl -s 看正文首屏,确认是不是占位内容或报错兜底页。
- 对照这批 URL 在 Sitemap、列表页、内链中的出现方式,区分是模板判断问题还是数据缺失问题。
- 检查跳转规则:删除类 URL 是否被统一 302 到首页,302 是否应改为 301,或者直接给出 404、410。
- 核对异常页返回的是 403、500 还是被兜底成 200,尤其是无权限与后端报错两类。
修正时的几个判断
- 确定不再提供的页面用 404,明确永久移除可用 410;
- 临时维护不要长期占用原 URL 返回 200,可返回 503 并配合 Retry-After;
- 跳转要区分永久与临时,302 长期使用容易让入口判断反复摇摆;
- 确实需要保留的空结果页可以返回 200,但应加 noindex,避免进入索引循环;
- 改动后持续观察该目录下的抓取频次与 404 比例变化,确认消耗是否下降。
状态码是给抓取方看的信号,不是给用户看的文案。页面可以展示得友好,状态码必须如实。
长期维护建议
把状态码分布做成一个可观察的指标:定期统计 2xx、3xx、4xx、5xx 在各目录的占比。一旦某个目录的 200 页面平均正文体积持续下降,通常意味着软 404 正在扩散。对 Sitemap 与已下架数据做交叉核对,把失效地址从入口清单中移除,可以减少无意义的反复抓取。抓取频次与收录表现受多重因素影响,稳定的状态码只是其中一项基础工作,需要与其他抓取条件一起长期观察。