搜尋抓取

重定向鏈與 URL 發現:一次跳轉到底消耗了什么

重定向不只是把訪問者带到新地址,它還會改變 URL 被發現的位置、拉長抓取路径、消耗額外的抓取次數。本文梳理常见的跳轉场景,给出判断跳轉鏈是否過長的检查方法,以及把連結收敛到最终地址的常規做法。

搜尋抓取

重定向鏈與 URL 發現:一次跳轉到底消耗了什么

站点改版、換域名、調整栏目结构时,重定向几乎是标配動作。但從搜尋抓取的角度看,每一次跳轉都不只是“把用戶带過去”這么简單:它改變了 URL 被發現的位置,消耗了額外的抓取次數,也让抓取路径多出一层不确定性。

重定向在抓取流程里扮演什么角色

搜尋蜘蛛拿到一個 URL 後,會先請求它,看到 301 或 302 狀態碼,再對 Location 指向的新地址發起第二次請求。也就是说,一次跳轉會带来一次額外的請求。如果這條鏈上有三层、四层跳轉,蜘蛛就要连續訪問多個地址,才能拿到最终内容。

结果是:原本訪問一個 URL 的预算,被拆成了好几次請求。抓取次數有限时,跳轉鏈越長,能覆盖到的 URL 數量就越少。

几種常见的跳轉场景

  • 域名迁移:老域名整站 301 到新域名,通常是必要且一次性的。
  • HTTP 到 HTTPS:如果站内連結、Sitemap 里還残留 http 地址,每次訪問都會多一跳。
  • 尾斜杠規范化:/page 與 /page/ 之間互相跳轉,容易形成来回打轉的循环。
  • 临时跳轉被長期使用:302、307 本意是临时,但不少站点把它当永久方案,長期挂着。
  • 跳轉目标又跳轉:A 跳到 B,B 又跳到 C,鏈路被越拉越長。

跳轉對 URL 發現的三個具体影响

1. 發現位置發生偏移

蜘蛛是從連結着手發現 URL 的。如果内鏈指向的是跳轉前的地址,而實际抓到的内容属于跳轉後的地址,两者在統計上會被拆開看。站内連結最好直接指向最终地址,让發現和抓取落在同一個 URL 上。

2. 抓取路径被拉長

一條内鏈本来一跳可達,加上跳轉後變成两跳甚至三跳。层級越深、跳轉越多,蜘蛛走到深层頁面的概率就越低,尤其是只靠單一路径進入的頁面。

3. 信号集中度被稀释

多個地址都能到達同一内容时,入口信号會被分散。長期看這不是致命問题,但會让“哪個地址该被收錄”變得模糊,統計和排查也會變麻烦。

怎么判断自己的跳轉鏈是否過長

  1. 用抓取日誌看狀態碼分布,統計 301、302 請求占比。如果比例長期偏高,說明站内還有大量連結指向舊地址。
  2. 抽查重点栏目頁,手動跟随跳轉,看需要几次才到最终内容。超過两次就值得處理。
  3. 检查 Sitemap 里的地址,確認全部是最终地址,没有中間態。
  4. 检查導航、面包屑、列表模板等内鏈輸出,確認吐出来的是最终地址。
判断标准很简單:蜘蛛用一次請求能拿到的内容,就不要让它請求两次。

收敛跳轉鏈的常規做法

  • 連結直指终点:内鏈、Sitemap、RSS 里的地址统一改成最终地址,這是收益最直接的一步。
  • 缩短鏈路:A→B→C 改成 A→C、B→C,避免串成一條長鏈。
  • 临时換永久:確認不再回滚的跳轉,換成 301。
  • 警惕循环:/a 跳 /a/ 又跳回 /a,這類問题通常出在服務器規則或 CDN 配置上,需要逐條核對。
  • 保留必要跳轉:老域名、老栏目的 301 不要轻易刪除,它們是老連結繼續被發現的通道。

重定向本身不是問题,問题在于它被当成長期架构的一部分。把跳轉当作過渡手段,把最终地址放回連結里,URL 發現和抓取路径都會干净很多。