搜索抓取

重定向链越长,蜘蛛损耗越大:从入口到落地页的跳转检查

蜘蛛抓取一个 URL 时,如果中间隔着多次跳转,抓取预算和时间都会被消耗。本文从重定向类型、常见跳转来源、落地页取舍和检查方法几个方面,说明如何把跳转链控制在一跳以内,让蜘蛛更快到达真正的内容页。

搜索抓取

重定向链越长,蜘蛛损耗越大:从入口到落地页的跳转检查

蜘蛛每跟一次跳转,都要多花一次请求

当一个 URL 返回 301 或 302,蜘蛛不会立刻把它当成最终页面。它会先记录跳转目标,再发起一次新的请求。跳转一次还好,如果一条链上有三次、五次跳转,蜘蛛就要连续走完这几步,才能看到真正的页面内容。这个过程会占用抓取预算,也会拉长单次抓取的时间。

更麻烦的是,跳转链往往不是刻意设计的,而是在域名迁移、协议升级、目录结构调整中慢慢堆积出来的。蜘蛛每次回访都要重新走一遍,损耗是持续发生的。

几种重定向类型,蜘蛛的理解不一样

  • 301 永久重定向:表示旧地址永久换到新地址,蜘蛛通常会把信号和后续抓取逐步转移到目标 URL。
  • 302 / 307 临时重定向:表示临时跳转,蜘蛛可能仍会保留原 URL 的抓取,不一定会立刻替换。
  • 308 永久重定向:和 301 类似,但明确要求保持请求方法,蜘蛛一般按永久跳转处理。

如果只是为了把用户从 http 带到 https,或者从旧域名带到新域名,应该用 301 或 308,而不是 302。用错类型,蜘蛛可能长期在两个地址之间反复确认,落地页的抓取稳定性会受影响。

跳转链通常从哪里来

常见的堆积点有几类:

  1. http 到 https 的协议跳转,再加上 www 与非 www 的跳转,容易形成两跳。
  2. 旧域名整体迁移到新域名,但内链和 Sitemap 里还保留旧地址。
  3. URL 改版后,旧目录 301 到新目录,新目录又 301 到带参数的最终地址。
  4. CDN 或负载均衡层配置了额外跳转,源站也有一层跳转。
  5. 登录、地区选择、语言切换等中间页,用跳转把蜘蛛带向默认页。

这些跳转单独看都有理由,叠在一起就会拉长路径。蜘蛛从入口到落地页的每一步都要重新解析、重新请求,服务器也要多响应几次。

落地页的取舍:尽量让内链直接指向终点

最直接的做法,是让站内链接和 Sitemap 里的 URL 都指向最终地址。比如 https 已经全站可用,内链就不要再用 http;确定使用 www 域名后,非 www 地址只保留跳转,不再出现在导航和文章正文里。这样蜘蛛从内链进入时,一次请求就能到达落地页。

跳转可以用,但最好不要让蜘蛛连续跟两次以上。一跳到达最终 URL,是更省抓取预算的结构。

Sitemap 里提交的也应该是最终 URL,而不是会跳转的旧地址。如果 Sitemap 里混入大量跳转地址,蜘蛛会先抓这些地址,再跟着跳到目标,额外消耗抓取次数。对于已经确认不再使用的旧 URL,可以用 301 指向最相关的目标页,而不是统一跳到首页或某个不相关的页面。

检查跳转链的几个入手点

  • 用命令行或抓取工具查看单条 URL 的响应状态和 Location 头,确认跳转次数。
  • 从服务器日志里筛选 3xx 状态码,看看哪些地址在被蜘蛛频繁请求。
  • 抽查内链和 Sitemap 中的 URL,确认它们是否直接返回 200。
  • 检查 CDN、反向代理和源站配置,避免同一层重复设置跳转。
  • 对于跳转链,优先合并成一次 301,再确认目标页可正常访问。

服务器稳定性与跳转后的响应

跳转本身不复杂,但跳转后的落地页必须稳定。如果蜘蛛跟完跳转,落地页返回 5xx 或超时,这次抓取就白跑了,还可能影响后续回访节奏。带宽和连接数紧张时,跳转请求也会占用一部分并发。把跳转链缩短,等于减少了蜘蛛和服务器之间的往返次数,对两边都更轻。

另外,跳转响应不宜过慢。有些站点在跳转前做复杂判断、查数据库或等待外部接口,蜘蛛拿到的只是一个慢响应。更合理的做法是让跳转层尽量轻,把内容判断放到落地页之后。

小结

重定向不是不能用,但要控制长度和类型。内链和 Sitemap 尽量指向最终 URL,旧地址用一次 301 指向最相关的目标,避免多层跳转和跳转环。蜘蛛每次少走一步,落地页被发现和抓取的机会就更稳定一些。