运维网站时,很多人只盯着 404 页面,却忽略了一种更隐蔽的情况:URL 能正常打开,服务器也老老实实返回 200,但页面上其实没什么内容——空列表、空白模板、被清空正文的旧文章。这类页面在浏览器里看起来没什么异常,在蜘蛛眼里却像一个正常页面,于是被反复抓取、反复评估,最后什么也没贡献。
软 404 到底是什么
软 404 指的是:HTTP 状态码告诉蜘蛛这个地址有效,但页面本身没有实质内容,或者内容已经不存在。它和真正的 404 的区别只在状态码。对用户来说,打开是一片空白或一句“暂无内容”;对搜索引擎来说,它先被当成正常页面收进来,再在后续评估中被判定为低质量,白白消耗抓取资源。
常见的软 404 来源
- 站内搜索、筛选、排序组合出的结果页,没有匹配项时仍然返回 200 的空列表。
- 商品下架、文章删除后,URL 保留但正文被清空,只留下标题和一行提示。
- 模板或插件出错,输出了一个没有正文的空壳页面。
- 分页参数超出实际页数,翻到后面几页时返回空列表。
- 依赖前端渲染的列表页,接口失败或被拦截时页面只剩框架。
- 多语言、多地区版本尚未填充内容就先上线了地址。
怎么把它们找出来
光靠浏览器点开很难穷尽,可以借助几个渠道交叉验证。
- 在搜索引擎的站点管理后台看页面索引报告,关注被标记为软 404 或“已抓取但未索引”的地址,尤其是成批出现的。
- 翻抓取日志,找出状态码为 200、但响应体积明显偏小(比如只有几 KB)的 URL,这类往往是空壳。
- 抽查带参数的地址,把筛选条件设成不可能命中的组合,看返回的是提示页还是空白页。
- 用抓取工具批量请求一批 URL,同时记录状态码和正文文本长度,按长度排序,最短的那批优先排查。
处理原则
- 先判断这个地址有没有存在的必要。内容确实不会再有的,就让它返回 404 或 410,干净利落。
- 内容只是暂时缺失、之后会补上的,先补内容;短期无法补齐的,考虑 301 到相关栏目或替代页面。
- 不要长期用 200 加 noindex 的方式挂着。这样既没有内容价值,又占着一个可被访问的地址,后续维护也容易混乱。
- 修复筛选和搜索逻辑:无结果时给出明确提示,并让这类无结果页返回合适的状态码,而不是一律 200。
- 检查模板和渲染流程,避免接口异常时输出空白页面,至少给出兜底内容。
把它变成流程
软 404 很少是一次性出现的,它跟着内容上下架、活动页下线、模板改版不断冒出来。比较省事的做法是把检查放进日常节奏:内容下架时同步处理地址,改版上线后抽查一批旧地址,每周从日志里扫一遍小体积的 200 响应。
状态码是给机器看的,内容是给人的。两者对不上的时候,通常先出问题的是抓取效率。
软 404 不会让网站立刻出大问题,但它会一点点稀释抓取预算,让真正值得被发现的页面排在后面。把它当成一项常规清理,比攒到某天集中大扫除要轻松得多。