站点运营

站点运营:软 404 自查,别让空页面挂着 200 状态码混进索引

软 404 指的是页面明明没有有效内容,服务器却返回 200 状态码。它会让蜘蛛反复抓取空页面,浪费抓取预算,也可能让低质页面进入索引。本文整理常见触发场景、自查方法和修复思路,帮助站点把状态码和页面实际内容对齐。

站点运营

站点运营:软 404 自查,别让空页面挂着 200 状态码混进索引

什么是软 404

软 404(soft 404)不是标准 HTTP 状态码,而是指一种不一致状态:页面实际上没有有效内容,或者内容已经不存在,但服务器仍然返回 200 OK。对访客来说,页面可能显示“暂无内容”“该商品已下架”或者一片空白;对蜘蛛来说,它却是一个正常可抓取、可索引的地址。

这种不一致会带来几个直接问题:蜘蛛可能反复回来抓取同一个空页面,占用本就有限的抓取预算;空页面可能进入索引,拉低整站质量判断;运营人员看日志时,也很难区分哪些地址真正值得维护。

常见触发场景

  • 内容删除但模板未变:文章、商品、活动页下线后,CMS 仍用详情模板输出一个 200 页面,只是正文区域为空。
  • 站内搜索结果为空:搜索词没有匹配结果,页面返回 200,标题可能是“搜索结果”,正文只有一句无结果提示。
  • 分页超出范围:列表页翻到第 50 页之后没有数据,但 URL 仍可访问并返回 200。
  • 参数过滤无结果:筛选条件组合后没有商品,页面却照常输出框架和空列表。
  • 错误处理配置不当:后端捕获异常后统一返回 200 和错误提示,而不是 5xx 或 404。

自查方法

先从高频入口和容易产生空页面的模板入手,不必一次性全站扫描。

  1. 抽查状态码:用浏览器开发者工具或命令行查看响应头。对疑似空页面执行 curl -I 可以只看到状态头,重点是确认返回的是 200 还是 404、410。
  2. 对比页面可见内容:如果页面主体只有导航、页脚和一句“暂无内容”,而状态码是 200,就值得进一步确认。
  3. 看抓取日志:同一批空 URL 是否被反复抓取;如果某个路径每天被访问多次,但页面始终没有实质内容,很可能就是软 404。
  4. 检查索引状态:在搜索控制台或类似工具中查看“已编入索引”的页面里,是否出现大量标题相似、内容稀薄的地址。
  5. 模拟蜘蛛访问:用不带登录态的方式访问,确认返回的状态码和普通访客看到的是否一致。

修复思路

处理软 404 的核心原则是:让状态码和页面实际内容保持一致。如果内容已经永久消失,返回 404 或 410 通常比返回 200 更合适;如果内容只是换了地址,用 301 指向新地址;如果页面还有部分价值,就补充有效内容或给出明确的替代入口。

  • 永久删除的内容:返回 404 或 410,并在页面上给出返回首页、相关栏目的链接。
  • 已迁移的内容:配置 301 到新 URL,避免保留空壳页面。
  • 空搜索结果页:考虑返回 404,或者至少加上 noindex,并限制蜘蛛抓取搜索参数。
  • 超出范围的分页:返回 404,或者从列表逻辑上限制最大页码。
  • 筛选无结果页:返回 200 但加 noindex 是一种折中,更彻底的做法是返回 404 并引导回主列表。
软 404 不会立刻带来惩罚,但它会让抓取预算流向没有价值的页面。定期清理空页面,比事后猜测抓取下降原因要省力得多。

上线后的复查

修复不是改完模板就结束。上线后需要观察一段时间:日志里这些 URL 的抓取频率是否下降,索引中的空页面是否逐步减少,替代页面是否开始获得正常抓取。如果状态码改了但页面仍然被大量访问,可能是缓存、CDN 或旧链接还在返回 200,需要继续排查。

另外,不要把所有返回 404 的页面都当成错误。只要它确实代表内容不存在,并且访客能看到清晰的引导,404 就是正常且必要的状态码。真正要避免的是“页面已经空了,状态码还在说一切正常”。