软 404 不是真的 404
服务器返回 200 OK,页面能正常打开,但正文区域几乎是空的,只剩导航、页脚和一句提示语。搜索引擎会把这批 URL 判定为软 404。它不是服务器给出的状态码,而是爬虫根据标题、正文、可见文本量得出的判断。
换句话说:你对搜索引擎说「这个页面存在」,页面内容却对它说「这里什么都没有」。两边打架时,判定通常更相信内容。
哪些页面最容易踩到
- 站内搜索结果页:没有匹配结果时仍返回 200,只显示「暂无相关内容」
- 分类或筛选组合页:某个筛选条件组合下没有任何商品或文章
- 缺货、下架、活动结束的商品页,正文被清空只剩一句「已结束」
- 自动生成的标签页、归档页:当月或该标签下没有新内容
- 站点错误页:页面做得很精致,但服务器返回的是 200 而不是 404
为什么它比普通 404 更麻烦
真实 404 是明确信号,搜索引擎收到就知道该怎么处理。软 404 是「先抓取、再判断」,判定结果会随页面内容变动,同一批 URL 可能这周还正常,下周就整批被判为空白。
这里要区分抓取和收录:被抓取不等于被收录。软 404 的 URL 往往会被持续抓取——蜘蛛每次都要重新确认它到底有没有内容——但收录数并不会因此增长。
抓取是过程,收录是结果。软 404 消耗的是过程,卡住的是结果。
自查的几步
- 看搜索控制台里的软 404 报告和「已抓取,当前未收录」这两类,统计涉及的路径规律
- 抽若干个 URL,用命令行或浏览器开发者工具确认返回码,再关掉样式和脚本,看正文还剩多少可用文字
- 用 site: 查询相关路径,观察这些页面是否还在索引里
- 翻服务器日志,看这批 URL 的抓取频率是否明显高于同层级的有内容页面
按页面价值分情况处理
页面确实有价值
先补内容,而不是急着改状态码。空搜索结果页可以给出该条件下的替代推荐、热门分类或相近关键词入口,让页面在「没有精确匹配」时依然有可用信息。归档页、标签页在确实有内容时应正常呈现,不要用脚本延迟很久才渲染正文。
页面确实没有存在意义
- 永久不会再产生内容的空页:返回 404 或 410,比让它挂着 200 更干净
- 周期性出现的空页(按月归档):保留结构,但在没有内容时不要放开抓取,或先 noindex、有内容后再撤掉
- 缺货但可能补货的商品页:保留 URL,正文补上库存状态、同类替代、预计到货时间,不要直接清空
拿不准的
先别批量删。用 robots.txt 屏蔽只是禁止抓取,如果页面有外链指向,仍可能以缺少描述的形式出现在结果里;要让它从索引中退出,应该用 noindex,同时确保该页面没有被 robots.txt 挡住,否则 noindex 根本读不到。
几个容易忽略的细节
- 软 404 的判定和语言、正文占比有关,不要用「大概多少字」当硬标准
- 筛选参数组合出来的页面,更适合在 robots.txt 里屏蔽抓取,而不是指望它们被收录
- 错误页必须返回真实的 404 状态码,页面设计再完整也一样
- 批量处理前后留一份 URL 清单和处理动作,过几周再对照索引变化,才知道是哪个动作起了作用
软 404 更像一个提醒:搜索引擎看到的不只是你的状态码,还有页面真正呈现出来的东西。把状态码和内容对齐,问题往往就解开了一半。