站点运营

站点运营:软 404 自查,别让不存在的页面返回 200

软 404 指的是页面已无内容,服务器却仍返回 200 状态码。这种情况让用户点进来看到空壳页面,也让抓取程序把无效地址当成正常页面反复访问。本文梳理常见的触发场景、可执行的自查步骤,以及 404、410、301 与 noindex 各自的适用区别,并提醒缓存和单页应用里容易忽略的坑。

站点运营

站点运营:软 404 自查,别让不存在的页面返回 200

什么是软 404

软 404 指的是页面实际已经不存在、或者内容已经被清空,但服务器仍然返回 200 状态码。访问者看到的是一句“暂无内容”或者大片空白,而抓取程序读到的是“这个地址正常,可以继续来看”。两种信号对不上,问题就出在这里。

它和硬 404 的区别不在“页面看起来空不空”,而在状态码和页面实际可用性是否一致。

常见的几种触发场景

  • 商品下架、文章删除之后,模板仍然渲染出空壳页面,标题还在、正文为空。
  • 站内搜索结果页、筛选页在没有命中结果时返回 200,只显示一句“暂无相关内容”。
  • 栏目页因为内容被移走而变空,但栏目地址本身没有做任何处理。
  • 后端把 404 统一处理成跳转首页,或者跳到一个提示页,状态码却是 200 或 302。
  • URL 拼错后,路由兜底到一个通用模板,任何不存在的路径都返回 200。

为什么它比硬 404 更麻烦

硬 404 是一个明确的信号:地址不存在,可以不再来了。软 404 给出的却是相反的暗示,抓取资源被持续花在永远不会有内容的地址上。同时,用户从搜索或外链点进来,看到空白页,体验落差明显;站点统计里这些地址还会被算作有效访问,干扰后续判断。

判断软 404 的关键,不是页面看起来空不空,而是状态码与页面实际可用性是否一致。

自查步骤

  1. 整理一批已经删除、下架、改名过的地址,做成清单。
  2. 用命令行工具逐个查看返回状态码,重点看响应里的第一行状态码字段。
  3. 同时把页面打开,确认正文是否为空壳、是否只有模板框架。
  4. 做对比:状态码为 200、内容却为空的地址,就是软 404 候选。
  5. 额外抽查站内搜索结果页、空分类页、空标签页这几类页面。
  6. 翻一下服务器日志,看这些地址被抓取的频次,判断影响范围有多大。

处理思路

确实不存在的地址

返回 404 或 410 都可以,410 表示永久删除。选哪个看站点习惯,关键是不要再返回 200。

有替代地址的

用 301 指向最相关的现存页面,而不是全部统一跳首页。跳首页对用户帮助有限,也不利于理解站内结构。

暂时没有内容的页面

如果只是暂时缺内容、之后会补上,可以考虑保留页面,或者先用 noindex 挡住,等内容补齐再放开。要注意 noindex 和 404 是两种不同处理,不要混用。

搜索与筛选结果页

无结果时直接返回 404 未必合适。更常见的做法是仍返回 200 但加上 noindex,同时把页面做得有出口,比如给出推荐内容或返回入口。

容易踩的坑

  • 只在页面上显示“404”字样,状态码却依然是 200。
  • 前端路由的单页应用,所有路径都返回 200,由前端渲染出 404 页面,服务端应配合返回对应状态码。
  • CDN 或反向代理把错误页缓存下来,对外统一返回 200。
  • 批量删除内容时只清理了数据库,没有同步处理 URL 与跳转规则。

日常怎么维持

把状态码检查放进常规动作里,比如每季度抽查一次删除清单,或者在日志中关注那些长期被抓到、却始终没有实际内容的地址。内容会持续下架,栏目会持续调整,软 404 属于会反复出现的类型,指望一次清理就永久干净并不现实。