搜尋抓取

蜘蛛跟着重定向走多遠:跳轉鏈對 URL 發現的實际影响

重定向本身不是問题,問题是鏈太長、指向不明。本文讲清搜尋蜘蛛遇到 301、302、多跳鏈和循环跳轉时的處理差异,梳理重定向鏈最常见的几種来源,並给出一套從單頁到全站的排查步骤,帮助你把跳轉收敛到一跳以内,让内鏈和 Sitemap 里的 URL 更快被正确發現。

搜尋抓取

蜘蛛跟着重定向走多遠:跳轉鏈對 URL 發現的實际影响

重定向在日常运维里太常见了,常见到容易被忽略。它本身不是错誤,問题往往出在鏈太長、指向不清晰。對搜尋蜘蛛来说,每一次跳轉都意味着多一次請求、多一次等待,也多一個可能中途放弃的理由。把跳轉收敛到一跳以内,通常比事後补救更省力。

一跳是常態,鏈式才是负担

單個 301 跳轉是最干净的形態:舊地址明确告诉蜘蛛新地址在哪,權重和信号都能传递過去。蜘蛛基本會顺着走,並在之後優先抓取目标地址。

但当跳轉變成两跳、三跳甚至更多,情况就不一样了。蜘蛛需要按顺序逐個請求,每一跳都消耗抓取资源,也增加超时或中断的概率。鏈越長,最终目标 URL 被及时發現的确定性越低。這並不是说蜘蛛一定不走,而是你主動给自己加了不确定性。

蜘蛛遇到跳轉时的几種走法

單跳 301

最理想的情况。蜘蛛讀到响應头里的 Location,轉到目标頁面,把新地址纳入後續抓取計划。目标頁如果是 200,整條鏈路就閉合了。

多跳 301 / 302 混合

http 跳 https、非 www 跳 www、舊目錄跳新目錄,如果這些規則没有一次性收敛,就會叠成一條鏈。蜘蛛通常會尝试跟進,但優先級會被压低,尤其是当鏈路末端還带參數或指向临时地址时。

302 與临时跳轉

302 表達的是临时。如果長期用 302 指向正式地址,蜘蛛可能繼續保留原地址,導致新舊两個 URL 同时被反复抓取,分散精力。需要永久迁移时,用 301 更明确。

循环跳轉

A 跳 B、B 跳 A,或者跳到自己。蜘蛛走到一定程度就會停下,這一類 URL 基本等于無法進入索引,還會浪費抓取請求。日誌里通常能看到同一 URL 反复出現的 3xx 记錄。

重定向鏈通常從哪来

  • http 與 https 混用,且没有一次性 301 到最终形態
  • 带 www 和不带 www 的域名各自配置了一套規則
  • 结尾斜杠規則不统一,反复跳轉
  • 栏目或目錄改版後只做了局部跳轉,舊地址跳中間頁,中間頁再跳新頁
  • CDN、负载均衡、應用层各配了一次跳轉,叠加成多跳
  • 短鏈、推廣連結直接落在站内,形成額外一跳
  • 語言或地区判断在服務端做跳轉,且判断條件不稳定

把鏈查清楚的具体步骤

  1. 從内鏈和 Sitemap 里各抽一批代表性 URL,尤其是改版過的栏目頁和詳情頁。
  2. 用命令行工具查看完整跳轉序列,而不是只看最终狀態碼。只看最终頁是否 200,會漏掉中間的每一跳。
  3. 批量抽查同一模板下的頁面,確認跳轉規則是按模板生效還是逐頁手工配置。
  4. 翻訪問日誌,統計 3xx 的占比和出現频率,重点看同一 URL 是否長期停在 3xx。
  5. 改動後重新跑一遍同样的清單,對比跳轉條數是否下降。

和内鏈、Sitemap 一起收口

跳轉鏈的問题,很多时候根源在内鏈和 Sitemap 里寫的就是舊地址。修跳轉只是止血,把源头改掉才算解决。

  • 站内連結直接指向最终 URL,不要指向會跳轉的地址
  • Sitemap 中只保留最终形態的地址,不要混入重定向 URL
  • canonical 指向的地址要和跳轉目标一致,避免两套規則互相打架
  • 改版时優先做一次性規則映射,把多层跳轉压成一跳
  • 對已经確認废弃的地址,用 410 或 404 比無限跳轉更清晰
判断标准可以很简單:從任何一個站内入口出發,到目标頁面只應经過一次跳轉。超過一次,就值得查一查規則是在哪一层叠上去的。

重定向不是需要彻底消灭的東西,而是需要被管理的路径。把跳轉收敛、把内鏈和 Sitemap 里的地址统一到最终形態,蜘蛛發現 URL 的過程會顺畅很多。建议每隔一段時間抽查一次跳轉序列,尤其在改版、換域名或調整 CDN 之後,這類問题最容易悄悄堆起来。