什么是软 404
软 404 指的是这样一种情况:用户和蜘蛛访问某个 URL 时,页面正文其实已经不存在了,展示的可能是“内容已删除”“暂无数据”,或者干脆是站点的通用首页、栏目空模板;但服务器返回的 HTTP 状态码仍然是 200。从状态码层面看,它和一篇正常文章没有区别。
普通 404 会明确告诉蜘蛛“这个地址没有内容”,而软 404 不会。蜘蛛只能靠正文判断,判断不清楚时,往往会继续抓取、继续保留在索引里,甚至反复回来确认。
软 404 常见的几种来源
- 内容被删除或下架后,系统没有返回 404,而是跳转到首页或栏目页,状态仍是 200。
- 空栏目、空标签页:栏目下暂时没有内容,页面照样输出标题和导航。
- 筛选、搜索、分页参数组合后没有结果,模板仍然渲染出一个空列表页。
- 商品或文章过期后保留页面框架,只把正文替换成“已结束”“已过期”。
- 改版或迁移时,旧模板没有清理,继续输出空壳页面。
这些问题通常不是一次改版造成的,而是随着内容下架、栏目调整慢慢积累出来的,所以很难靠肉眼发现。
为什么它比普通 404 更值得注意
普通 404 的影响是明确的:蜘蛛知道不该再抓。软 404 的问题在于“看起来正常”,于是它可能:
- 持续消耗抓取配额,让真正需要更新的页面排队更久。
- 进入索引后,用户搜索到点开却看不到内容,影响访问体验。
- 让日志里的状态码统计失真,你看到的 200 数量并不等于有效页面数量。
- 如果这类页面大量存在,站点整体质量会被拉低。
软 404 不一定马上带来明显问题,但数量一多,抓取效率和索引质量都会受影响。它更像慢性消耗,越早清理越省事。
怎么排查软 404
- 先看服务器日志里状态码为 200 的 URL,按访问量排序,找出那些不应被频繁访问的地址。
- 随机抽查这些 URL,观察正文区域是否有实际内容,还是只有标题、导航和一句提示。
- 检查被删除内容的下架流程:确认删除后返回的状态码,是 404、410 还是仍然 200。
- 检查空栏目页和筛选结果页,看无结果时模板输出什么。
- 用命令行或浏览器开发者工具查看响应头,确认状态码不是由前端脚本“假装”出来的。
排查时要注意,有些页面在浏览器里看起来正常,但响应头里的状态码可能已经被 CDN 或缓存改写,最好以源站返回为准。
处理原则:按页面价值分流
发现软 404 后,不建议一刀切全部删掉,而是先判断这个地址还有没有保留价值:
- 内容彻底不要了,也没有替代页:返回 404 或 410,让蜘蛛明确知道页面已失效。
- 有同类内容可以承接:做 301 跳转到最相关的新页面,而不是跳到首页。
- 筛选、搜索无结果页:让无结果状态返回 404,或者加上 noindex,避免被大量索引。
- 栏目暂时没有内容:先隐藏入口,补充内容后再开放,不要长期挂着空页面。
需要注意的是,状态码要在服务端返回,不要用 JavaScript 跳转或前端提示来代替。前端跳转对用户可见,但对蜘蛛来说,原地址仍然是一个 200 页面。
日常运营中的小流程
与其等到问题堆积再集中处理,不如把它放进日常流程:
- 内容下架时,顺手确认返回的状态码。
- 每月抽一次日志,重点看访问量高但内容为空的 URL。
- 栏目改版或合并后,检查旧入口是否还在输出空壳页。
- 把软 404 检查写进上线清单,和死链检查一起做。
软 404 不会立刻让站点出问题,但它会让抓取和索引的效率慢慢变差。把失效页面和正常页面区分清楚,是对站点结构最基本的维护。