搜索抓取

重定向链与蜘蛛抓取:跳得越多,页面越难被及时抓到

301、302 本身不是错误,但一条 URL 要经过多次跳转才能到最终页时,蜘蛛每跳一次都要额外发一次请求。本文拆解跳转链常见的形成原因,说明它如何消耗抓取配额、拉长发现延迟,并给出把跳转收敛到一跳、让内链与 Sitemap 直接指向最终 URL 的自查方法。

搜索抓取

重定向链与蜘蛛抓取:跳得越多,页面越难被及时抓到

服务器返回 301、302、307、308 时,蜘蛛拿到的不是页面内容,而是一个新的地址。它必须再发一次请求,才能继续这条路径。单次跳转很常见,也不算什么大问题;真正麻烦的是跳转连成一条链,一个 URL 要经过三四个地址才能落到最终页。

一次跳转,两次抓取

对蜘蛛来说,抓取预算里记的是请求次数,不是“最终拿到了几个页面”。一次跳转至少消耗两次请求:一次拿 3xx 响应,一次拿最终内容。链上有三跳,成本就是四次。站点规模不大时感觉不明显,URL 数量到几万、几十万,跳转链就会实打实地占掉一部分抓取额度。

同时,跳转也拉长了发现时间。蜘蛛在链上中途停下、限速、改天再来,新页面进入索引的时间就会往后拖。

跳转链通常从哪里长出来

  1. HTTP 到 HTTPS 一次跳转,再从裸域跳到 www,这是两条独立规则,叠在一起就成了两跳。
  2. 旧栏目改版时逐次配置的跳转,A 跳到 B,B 后来又跳到 C,旧规则没清理,A 就变成两跳甚至三跳。
  3. CDN、负载均衡、反向代理各自加了一条跳转规则,比如补斜杠、统一小写、修正大小写路径。
  4. 页面里用 meta refresh 或 JavaScript 做的“跳转”,蜘蛛需要先下载 HTML 再执行,成本比 HTTP 跳转更高,效果也更不稳定。
  5. 移动端与桌面端互跳、多语言站点按 IP 或语言自动跳,容易形成来回跳或按 UA 分流的多条链。

链太长会出现什么

  • 抓取次数被摊薄:本该用在内容页上的请求,花在了中间地址上。
  • 信号分散:内链、外链、Sitemap 如果指向的地址不一致,同一份内容会出现多个入口,权重判断更模糊。
  • 循环与断链:两条规则互相指向,或跳到已经失效的地址,蜘蛛走到一半只能放弃。
  • 状态码误判:临时跳转反复出现时,蜘蛛可能仍把旧地址当作主版本,新地址的收益被延后。

把跳转收敛到一跳

  1. 梳理现有规则,找出所有落在中间的地址,确认每一跳的目标是否必要。
  2. 让最常见的入口一次到位:http 直接跳 https 的 www 版本,不要在 http 裸域上再中转一次。
  3. 内链、Sitemap、canonical、分享链接统一写成最终 URL,不要依赖跳转来“修正”。
  4. 改版时用 301 指向新地址,而不是先指到临时页再指到最终页。
  5. 定期用日志或抓取工具抽查 3xx 的分布,看看有没有超过一跳的路径。

服务器与配置侧的检查点

很多跳转不是内容团队配的,而是服务器和边缘节点自动加的。检查 HSTS 设置、CDN 的强制 HTTPS、回源协议、URL 重写规则,能发现一批看不见的中转。若站点使用 WAF 或限流,还要确认跳转响应本身没有被误拦成 403 或 5xx,否则蜘蛛看到的是“错误”而不是“搬走了”。

跳转本身没有错,错的是让蜘蛛在路上多走几趟。能把一个地址一跳送到最终页,就别用两跳。

小结

把跳转链当作抓取路径上的收费站:每过一个,都要交一次请求。定期清理中间地址、让链接直接指向最终 URL,是最省事的做法。它不能让页面一定被收录,但能让蜘蛛少花冤枉时间,把配额留给真正的内容。