很多站点在清理内容时,会把下线的页面直接删掉,却没有同步调整返回状态码;也有些页面本身就是空壳,比如搜索无结果、筛选后没有匹配商品、栏目被清空但模板照常渲染。这些页面都会以 200 的状态返回给访客和蜘蛛,看起来“正常”,实际没有任何有效内容,通常被称为软 404。
软 404 的常见来源
软 404 很少是刻意配置出来的,多数是流程或模板的副产品。
- 搜索与筛选页:用户输入的关键词没有结果,页面只显示一句“暂无数据”,URL 仍然可访问且返回 200。
- 分页越界:列表只有 3 页,第 4 页仍然能打开,只是空白列表。
- 内容下线:商品下架、文章撤回,但 URL 保留着,模板输出“该内容不存在”的提示。
- 栏目被清空:栏目页还挂在导航里,里面一条内容都没有。
- 模板渲染异常:数据取不到,页面只剩页头页脚,正文区域为空。
怎么把它们找出来
靠人工点开每一条链接不现实,可以从日志和抽样两方面入手。
- 翻抓取日志,筛出状态码 200 但响应体积明显偏小的 URL,这类往往是空壳页。
- 用站内爬取工具抓一遍全站,按正文文字长度排序,看最短的那一批是什么页面。
- 把搜索、筛选、排序等参数组合起来访问几次,观察无结果时返回的状态码和页面内容。
- 抽查已下线的旧内容,确认返回的是 410、404,还是仍然 200。
- 检查栏目页和聚合页,确认没有内容时系统给出的实际响应是什么。
判断标准可以简单一点:这个页面拿掉页头、页脚和导航之后,还剩多少对访客有用的信息?如果几乎没有,就不该用 200 告诉蜘蛛它是一条正常内容页。
放任不管的代价
软 404 消耗的是抓取预算。蜘蛛每次过来都要重新下载、解析一个没有信息的页面,真正需要更新的内容反而可能被排在后面。对访客来说,点进来看到空白页,体验同样不好。如果这类页面数量很多,整站的内容质量判断也可能被拖累。
处理思路
- 确定下线的内容返回 404 或 410,并在站内相关位置撤掉入口链接,不必为了保住流量硬撑一个空页面。
- 无结果的搜索页给出明确提示,同时加上 noindex,避免被大量收录。
- 筛选组合页如果无结果,返回 404 或做跳转,不要持续生成无限的空壳 URL。
- 分页越界直接返回 404,避免蜘蛛顺着“下一页”一直翻到空列表。
- 模板异常属于技术问题,应该修数据源和渲染逻辑,而不是让页面静默输出空白。
- 暂时缺内容的栏目可以先从导航中撤下入口,等内容补齐再放回去。
把检查变成日常动作
- 内容上下线时同步确认状态码和入口链接,别只删数据库记录。
- 模板改动后抽样几个边界情况:无数据、超范围、参数非法。
- 定期看日志里响应体积最小的那批 URL,发现异常及时处理。
这些工作做起来不复杂,难的是持续。把状态码和页面实际内容对应起来,蜘蛛拿到的信息才和访客看到的一致。