一句话回答
软 404 是返回 HTTP 200 OK、却显示「找不到」或几乎没有内容的 URL,搜索引擎无法依靠状态码判断。Google 也会把被判定为错误页的单薄页面标为软 404。
什么是软 404?
软 404(Soft 404)是指页面对用户说「这里什么都没有」(或者几乎没有内容),却返回 HTTP 200 OK,而不是 404 Not Found 或 410 Gone。浏览器照常显示,但搜索引擎看到的是一个成功的响应,页面实际上却是空的或不存在的。
如果状态码是 200,而 Google 的系统判断内容是错误页或单薄到没有用,即使你的模板没有写「找不到」,Google 也会把它标为软 404。Search Console 在 网页索引 › 软 404 下报告这类页面。
硬 404 和软 404
| 硬 404 | 软 404 | |
|---|---|---|
| 状态码 | 404(或 410) | 200 |
| 用户看到的 | 「找不到页面」 | 「找不到页面」,或一个空模板 |
| 爬虫的判断 | URL 不存在,删掉 | 不清楚,只能根据内容猜 |
| 索引 | 逐渐移除 | 浪费几次抓取后,作为软 404 排除 |
| 有问题吗 | 没有,这是正确的信号 | 有,浪费抓取预算,也让报表混乱 |
常见原因
| 原因 | 例子 |
|---|---|
| 自定义错误页返回 200 | 服务器把不存在的 URL 改写到 /not-found,返回 200 |
| 单页应用 | 所有路由都返回同一个 HTML 外壳和 200,再由浏览器里的应用渲染「页面不存在」 |
| 搜索或筛选结果为空 | /search?q=zzz,或一个没有任何商品的分类筛选 |
| 缺货或下架商品 | 商品页还在,但没有价格、没有描述,只写「已下架」 |
| 把所有 404 都重定向到首页 | 大量不相关的首页重定向会被 Google 当成软 404 |
| 单薄的占位页 | 只有一个标题、别的什么都没有的地区页或标签页 |
计算示例
某网店有 4,800 个商品 URL。去年下架了 640 个商品,它们的页面现在显示「该商品已下架」,状态码 200。Search Console 网页索引报告把其中 590 个列为软 404(示例数据)。
处理方案:
| 分组 | URL 数 | 处理 |
|---|---|---|
| 已下架,有直接替代款 | 210 | 301 到替代商品 |
| 已下架,有相近分类 | 300 | 301 到最相关的分类,而不是首页 |
| 已下架,没有相关页面 | 130 | 返回 410 Gone |
| 暂时缺货 | (另算) | 保持 200,但页面要完整:描述、参数、替代推荐、到货提醒 |
几周之内软 404 数量下降,抓取也转回在售商品。
怎么修复软 404
- 返回正确的状态码。 页面不存在就返回 404 或 410,自定义错误页照样可以做得很友好。
- 只重定向到真正相关的页面。 301 到最接近的替代页没问题,统统重定向到首页不行。
- 该存在的页面就补上实质内容。 单薄的页面要充实,或者合并、删除,见内容修剪。
- 修好单页应用的路由。 让服务器对未知路由返回 404;做不到的话,在前端的「不存在」视图里输出
noindex标签。见单页应用 SEO。 - 空的搜索和筛选页不进索引,加
noindex,也别给它们加链接。
怎么找到软 404
- Search Console: 网页索引报告里的「软 404」原因。
- 抓取工具: 标出文字极少、或标题 / H1 含「找不到」的 200 页面。
- 统计工具: 入口很多、跳出率接近全部、停留时间几乎为零的页面,常常是空页面。
- 服务器日志: 对比应用认为不存在的 URL,爬虫拿到的是什么状态码,见 SEO 日志分析。
在 TapCub 里
在「找不到页面」模板的 TapCub 脚本标签上加 data-404="true",访问不存在页面的记录就会出现在页面报表的 404 页面 标签里,带上请求路径和来源。即使服务器返回 200,也能看出失效链接是从哪里来的。导入服务端记录后,爬虫抓到 404 或 5xx 的情况在抓取健康报表里。两张表里都出现的路径,优先修复。见抓取错误。
另见:查看抓取健康。
参考资料
- Google Search Central. Soft 404 errors.
- Google Search Central Blog (2008). Farewell to soft 404s.
- MDN Web Docs. 404 Not Found.
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
