软 404 是什么
软 404(soft 404)指的是:页面实际上没有可用内容,但服务器返回的状态码是 200。对用户来说,看到的是一个“没有找到相关内容”的提示;对搜索引擎来说,它先看到的是一张正常返回的页面,需要再靠内容特征去判断“这个页面其实不存在”。判断一旦成立,后台报告里通常会出现软 404 标记,页面也会逐步从索引里被拿掉。
与之相对的是硬 404:页面不存在就返回 404 或 410,双方理解一致,代价最小。软 404 的问题不在于“多了一个页面”,而在于状态码和真实情况不一致。
常见的软 404 来源
- 搜索无结果页:站内搜索没命中关键词,头部和导航照常输出,正文只有一句“没有找到相关内容”,状态码仍是 200。
- 空分类、空标签页:筛选条件叠加后,没有任何商品或文章,模板照样完整渲染。
- 失效详情页兜底成通用页:内容下架后跳到首页或通用提示页,URL 不变,状态码也不变。
- 错误页配置反了:自定义 404 页面做得挺好看,却由服务器以 200 返回。
- 依赖接口或 JS 的页面:接口报错、数据为空,骨架屏渲染完就结束,HTTP 层看不出任何异常。
为什么值得专门处理
软 404 的成本不止“多一个没用的 URL”:
- 消耗抓取额度。蜘蛛会把它当正常页面抓下来并反复访问,占用的额度本可以留给真正需要更新的内容。
- 干扰质量判断。同一模板下堆积大量空页面,会让搜索引擎对该目录甚至整站的可用内容比例打折扣。
- 放大重复与收口问题。空页面之间高度相似,又常带着指向自身的 canonical,收口链条在这里就断了。
判断原则很简单:页面到底有没有内容,服务器应该给出和它一致的回应。内容不存在却返回 200,等于把判断成本推给搜索引擎,结果往往不如自己说清楚。
自查:怎么把软 404 找出来
- 先看站长后台的软 404 报告,被标记的 URL 是最好的入口,注意区分“确实该删”和“只是暂时为空”。
- 按模板抽查:搜索页、标签页、筛选页、下架详情页、超出范围的分页,每类取几个 URL 看状态码和正文长度。
- 用命令行或抓取工具批量取状态码与正文文本长度,去掉导航、页脚后几乎没内容的,基本可以判定为空壳。
- 对比正常页面和异常页面的 HTML,看差异是集中在正文区域,还是整个模板根本没渲染出来。
处理顺序
- 确实不存在的页面:返回 404 或 410。已确认永久下线的,410 更直接。
- 临时为空、之后可能恢复的:让状态码如实反映,同时加 noindex 观察,不要长期挂着一个 200 的空页面。
- 能合并的:把空标签页 301 到上级分类,把无结果搜索页指向有用的入口页。
- 内容其实靠前端渲染的:先修接口和渲染,再谈收录,改状态码解决不了接口为空这件事。
- 处理完留一张清单,隔一段时间复查,尤其是筛选参数组合出来的 URL。
几个容易踩的坑
- 只改了自定义 404 页面的样式,忘了让服务器返回 404 状态码。
- 把 noindex 当成万能补丁,空页面越积越多,抓取额度照样被消耗。
- 无结果搜索页的 canonical 指向自己,等于告诉搜索引擎“这就是标准页”。
- 把软 404 和硬 404 混为一谈,看到报告里的数字就慌,其实要先分清是内容真没有,还是渲染失败。
软 404 不是需要紧急抢修的事故,但它会持续消耗抓取资源、拉低整站的可用内容比例。把它当成一次页面清理:该返回 404 的返回 404,该合并的合并,该修渲染的修渲染,剩下的交给时间。