入口页下线、改版或者配置出错之后,返回 404 是很常见的事。这时候很多人会问:页面上那些指向目标 URL 的链接,搜索蜘蛛还会不会继续跟着抓?下面把结论、原因和验证方法说清楚。
结论:404 和 410 页面里的链接,通常不会被继续跟进
主流搜索引擎的公开说明比较一致:404(未找到)和 410(已删除)页面上的链接,不会被当作有效链接继续抓取。蜘蛛拿到 404 状态码后,一般只记录这个 URL 不存在,不会再解析正文,也不会把里面的链接放进待抓取队列。
5xx(服务器错误)是另一种情况。它代表暂时性问题,蜘蛛通常会稍后重试。如果入口页长期返回 5xx,抓取频率会下降,但它的处理逻辑和 404 并不一样。
容易踩坑的三种“假 404”
1. 软 404
服务器返回 200,但页面内容是“页面不存在”“内容已删除”。蜘蛛会按 200 处理一段时间,一旦判断这是软 404,同样不会再跟进链接。这种情况比明确的 404 更麻烦,因为从状态码层面看不出问题。
2. 状态码和内容不一致
响应头写 200,实际是空白页或错误页模板;或者响应头写 404,页面却渲染出完整的导航和链接。前者浪费抓取配额,后者容易让你误以为链接被发现了,其实并没有。
3. 301 之后的最终页是 404
入口页做了 301,但跳转目标本身是 404。蜘蛛跟到最终 URL 后停止,链接触达不了,等于整条路径断掉。
日志里看到蜘蛛请求入口页,不代表链接会被抓
这是最常被误判的一点。日志只说明蜘蛛访问了入口 URL,不说明它解析了页面正文。要判断链接是否真的进入抓取流程,得看两头:
- 入口页的响应状态码是不是 200,且原始 HTML 里确实包含目标链接;
- 目标 URL 的访问日志里,是否出现了同一个蜘蛛的请求。
只在入口页日志里看到大量蜘蛛请求,很可能只是它在反复确认这个 404。
入口页必须下线时,怎么处理更稳妥
- 能保留就保留,返回 200 并保留原有的链接结构。
- 确实要下线,用 301 跳到一个仍然有效的入口页或列表页,不要直接给 404。
- 跳转目标要返回 200,正文里也要有链接,别只跳到首页却不带任何入口链接。
- 同步更新 sitemap 和站内链接,别让大量内部链接还指向已下线的入口页。
- 核对 robots.txt,确认没有误 Disallow 掉需要被发现的路径。
怎么验证
比较实用的做法是挑几个入口页做样本:
- 用抓取类工具或 curl -I 看状态码,确认不是软 404;
- 查看页面源码(不是渲染后的 DOM),确认链接确实写在 HTML 里;
- 对比入口页和目标 URL 的日志时间,看目标 URL 是否在入口页被抓后的一段时间内出现请求。
状态码是入口页能不能被“读懂”的前提。链接写得再规范,只要状态码告诉蜘蛛这里没有有效内容,后面的发现和抓取就无从谈起。
总结一句:404 和 410 基本等于宣告这条路走不通,入口页里的链接不会被继续跟进。想让入口页起到作用,先保证它返回 200、正文可解析,再谈链接形式和抓取效率的问题。