搜索控制台里的“软 404”报告,很多人第一次看到会以为是服务器返回了 404。实际恰恰相反:页面返回的是 200,服务器和爬虫之间的通信正常,只是搜索引擎在看完内容后,判断这个页面没有实际价值,和“页面不存在”差不多。区别在于,真 404 是服务器自己说“没有这个页面”,软 404 是搜索引擎替你说“这页约等于没有”。两种情况的处理方式完全不同,先分清是哪种,再动手。
先确认它到底是软 404,还是别的状态
打开网址检查,看三件事:HTTP 状态码、抓取到的页面内容、以及抓取结果是不是空壳。如果状态码是 200,抓取内容正常,但页面被判成软 404,那属于内容判断问题;如果状态码本来就是 404 或 410,只是被报告列出来,那走的是另一套流程。还有一种常见误判:页面本身没毛病,但被 robots.txt 屏蔽或加了 noindex,爬虫拿不到内容,也容易往软 404 的方向靠。
按成因分类,再决定怎么处理
1. 内容空壳:列表页、搜索结果页、筛选页
空结果的分类页、无商品的筛选组合、站内搜索的无结果页,是最典型的来源。这类 URL 往往数量巨大、模板结构一致,主体区域只有一句“暂无内容”。搜索引擎会把它们归为无价值页面。处理方式不是简单删 URL,而是:对确实无结果的组合返回 404 或至少 noindex;对有结果的组合,保证内容真实存在再谈收录。
2. 主体内容没渲染出来
如果页面依赖接口或 JS 渲染,而接口报错、超时、被拦截,爬虫拿到的就是一个框架加空白。这种页面状态码仍是 200,内容却是空的。排查顺序是:先用网址检查看原始 HTML,再确认接口在没有浏览器环境时是否可用,最后看是否有针对特定用户代理的限制。
3. 状态码和内容对不上
有些站点把“页面不存在”的提示页做成了 200 返回,或者在 CMS 里把已删除内容转成了空模板。这种页面在人眼里像错误页,爬虫看到的也是空壳,状态码却写着正常。这类问题要回到服务端修,不要靠前端跳转掩盖。
4. 页面被屏蔽但仍被抓取
robots.txt 屏蔽叠加 noindex 的组合,容易让页面长期停在“已抓取、内容为空”的状态。正确的做法是想清楚要不要留:要留就放开抓取,用 noindex 或 canonical 收敛;不留就让 URL 自然失效或返回 410。
推荐的排查顺序
- 在报告里按页面类型分组,先看数量最多的那一类对应哪个模板。
- 随机抽三到五个 URL 做网址检查,记录状态码、抓取内容和索引状态。
- 判断是内容问题、渲染问题还是状态码问题,归到上面四类里。
- 修好源头后,不要急着批量提交删除,先观察下一轮抓取后的状态变化。
- 确认页面确实已无用,再考虑 404、410 或 noindex 的收敛动作。
几个容易踩的坑
- 把软 404 直接当成收录异常,一上来就改 canonical,问题通常不在那里。
- 对空列表页统一 301 到上级分类,短期看似收敛,长期可能把上级页面的主题冲淡。
- 用 JS 跳转到错误页,状态码仍是 200,爬虫看到的内容依旧是空壳。
- 只盯数量下降,不看页面类型,改完也不知道自己有没有改对。
软 404 反映的是页面价值判断,不是服务器故障。它的解法通常落在内容侧和模板侧,而不是索引提交侧。
最后提醒一句:软 404 数量多,不等于站点出了大问题。空结果页和筛选组合页天然容易落进这一类,重点是分清哪些是可以清理的无效 URL,哪些其实是内容没渲染出来的正常页面。前者收敛,后者修复,顺序不要反。