搜尋抓取

重定向鏈與抓取路径:多次跳轉如何消耗抓取资源並改變落地 URL

重定向本身不是错誤,但跳轉鏈過長會持續消耗抓取资源,並让落地頁只能被間接發現。本文梳理長鏈路的常见来源、跳轉對 URL 發現路径的影响,以及用 curl、抓取日誌和 Sitemap 核對並收敛跳轉的具体步骤。

搜尋抓取

重定向鏈與抓取路径:多次跳轉如何消耗抓取资源並改變落地 URL

重定向是站点改版、換域名、調整目錄时最常见的處理方式,本身並不算错誤。但当一次跳轉變成三跳、四跳,甚至形成循环时,蜘蛛每次都要按顺序請求鏈路上的每一個地址,抓取资源被分摊到多個不會产生内容的 URL 上,真正需要被抓取的頁面反而被推後。

一次跳轉里蜘蛛到底做了什么

蜘蛛請求 A 地址,收到 301 或 302 响應,讀取 Location 头,再請求 B 地址。如果 B 又返回跳轉,它會繼續往下走。整個過程有几個结果:

  • 抓取预算按請求次數消耗,鏈路越長,消耗越多;
  • 跳轉目标會被记錄為發現路径的一部分,可能影响後續的归集判断;
  • 中間地址如果長期返回跳轉,蜘蛛會持續回訪,形成無效訪問;
  • 鏈路中出現 404、5xx 或超时,整條路径的價值都會被削弱。

對多數搜尋引擎来说,單條鏈路跳轉次數越多,越容易在中途停止跟進。停止之後,落地頁面就只能依赖其他入口被重新發現。

長鏈路通常是怎么堆出来的

协议與主机名的层层叠加

比如 http 跳 https、裸域跳 www、www 跳 m 或某個中間域名,一层层叠加後,一個入口地址可能要经過四次跳轉才能到達真實頁面。這類問题在上线 HTTPS 或切換主域时最容易出現,往往只配置了單段跳轉規則,没有做收敛。

改版與目錄迁移的遗留規則

舊目錄跳新目錄、舊參數地址跳静態地址、栏目頁跳栏目預設頁,這些規則如果分批上线且没有合並,就會把原本可以一步到位的跳轉串成鏈條。

跳轉對 URL 發現路径的影响

内鏈、Sitemap、外部連結都可能指向跳轉地址。当這些入口長期指向中間地址时,蜘蛛每次都要先走一遍鏈路,再决定是否抓取落地頁。更常见的情况是:

  • Sitemap 里提交的是舊地址,蜘蛛每次抓取都先遇到 301;
  • 内鏈仍指向带參數或舊目錄的地址,落地頁只被間接發現;
  • 跳轉目标本身又有 canonical 指向第三個地址,抓取归集變得混乱。
跳轉是给浏览器和蜘蛛用的過渡手段,不适合作為長期入口。凡是被内鏈和 Sitemap 反复引用的地址,最好直接指向最终落地頁。

核對與收敛清單

  1. curl -IL 或類似方式,對核心入口逐個查看跳轉序列,记錄每一跳的狀態碼和目标地址;
  2. 從抓取日誌中篩選出返回 3xx 的 URL,統計出現频率,高频項優先處理;
  3. 检查 Sitemap 中是否包含跳轉地址,如果有,替換為最终落地頁;
  4. 核對内鏈、導航、面包屑中的地址,确保指向最终 URL,而不是中間地址;
  5. 排查跳轉循环,尤其是带 www 與不带 www 之間互相跳轉的配置错誤;
  6. 301 與 302 按语义使用:永久迁移用 301,临时活動頁用 302,不要把临时跳轉長期挂在稳定入口上;
  7. 確認跳轉目标頁能正常返回 200,並且與 canonical 标簽指向一致。

落地时的几個注意点

收敛跳轉不是一次性的工作,改版、換域名、調整栏目都可能重新引入鏈路。比較稳妥的做法是:把跳轉規則集中维護,避免分散在多個配置里;上线後隔一段時間复查一次核心入口的跳轉序列;新增内鏈时直接使用最终地址。

另外,跳轉數量减少並不等于抓取一定變好。服務器响應時間、頁面体积、内鏈结构同样影响抓取节奏。跳轉收敛更像是把原本浪費在中間环节的請求收回来,让這些請求落到真正有内容的頁面上。