很多站点运营者把 404 当成错误,其实 404 本身是正常的 HTTP 状态码,表示资源不存在。真正麻烦的是软 404:页面内容看起来是空的或写着“未找到”,但服务器返回 200。搜索蜘蛛收到 200 后,会把该 URL 当作有效页面处理,继续抓取、解析,甚至尝试索引。结果就是抓取配额被大量空页面消耗,站点质量信号也会被稀释。
什么是软 404,为什么蜘蛛会误会
软 404 通常指 URL 不存在或内容已删除,但响应状态码不是 404,而是 200 或其他成功状态。蜘蛛判断页面有效性,主要看 HTTP 状态码和页面主体,并不看你页面上写没写“404”。如果返回 200,它就会按正常页面对待。对于使用蜘蛛池或外部链接引导抓取的站点,如果被引来的 URL 大量落在软 404 上,抓取预算会白白浪费。
提示:搜索蜘蛛不会因为页面里写着“404”就认为它是错误页,状态码才是更明确的信号。
常见软 404 来源
- CMS 主题或插件把不存在的文章渲染成空模板,状态码仍然是 200。
- 前端路由的 catch-all 路由没有返回 404,SPA 首屏直接返回 200。
- 站内搜索无结果页,返回 200 并展示“没有找到相关内容”。
- 过期商品、下架内容只是隐藏了入口,URL 仍可访问且返回 200。
- 参数组合或筛选无结果,页面返回 200,但列表区域是空的。
- CDN 或反向代理缓存了错误页,把原本的 404 缓存成 200 分发。
- 服务器重写规则把不存在的路径统一指向首页或某个落地页,返回 200。
自查步骤:从状态码开始
- 准备一批典型 URL:随机不存在的路径、已删除内容、空搜索结果、无结果筛选、旧参数页。
- 用 curl -I 或浏览器开发者工具查看响应状态码,不要只看页面文字。
- 对比正常内容页、404 页、410 页的状态码和响应头,确认没有互相矛盾。
- 检查 CMS 的 404 模板设置,确认主题没有强制返回 200。
- 检查前端路由:服务端渲染或预渲染时,未知路由应返回 404;纯客户端路由至少不要返回 200 空壳。
- 检查 CDN 缓存规则,避免把 404 页面缓存成 200 并长期分发。
- 查看服务器访问日志和搜索蜘蛛抓取日志,找出返回 200 但内容为空的 URL 模式。
处理原则:该 404 就 404,该 410 就 410
内容彻底删除且没有替代页面,可以返回 410,告诉蜘蛛资源永久消失。暂时不可用可返回 404,但不要用 302 长期跳首页。把所有错误 URL 都 301 到首页,容易产生大量软 404 或无效重定向,用户和蜘蛛都得不到明确答案。保留有用的 404 页面,给用户推荐相关栏目和搜索框,但状态码必须是 404。
减少软 404 的日常动作
- 内容下线时同步检查内链、站点地图和导航,删除或更新指向已删除页面的链接。
- 站内搜索无结果页设置 noindex,避免被当成正常列表页。
- 筛选和参数页在无结果时返回 404 或至少 noindex,不要输出空列表给蜘蛛。
- 定期抽样检查蜘蛛抓取日志中的 200 状态空页面,按目录汇总处理。
- 如果使用蜘蛛池或外部链接引导抓取,先确认落地页有效,别把蜘蛛引到一堆软 404。
别把 404 当成洪水猛兽
正常 404 是网站健康的一部分,说明服务器在正确回应不存在的资源。真正需要担心的是软 404 和错误的状态码组合。把状态码、页面内容、内链和站点地图对齐,蜘蛛的抓取预算才不会浪费在空页面上,用户也不会在“看似正常”的错误页里迷路。