搜尋抓取

搜尋蜘蛛抓取:重定向鏈長度與跳轉類型造成的入口消耗排查

站点迁移與改版後遗留下来的重定向鏈,會持續消耗搜尋蜘蛛的抓取资源。本文梳理连續多跳、临时跳轉長期化、循环断鏈等常见形態,给出一套從抓取日誌篩選到命令行驗證的排查顺序,並說明如何把入口收敛到一跳、减少無效請求。

搜尋抓取

搜尋蜘蛛抓取:重定向鏈長度與跳轉類型造成的入口消耗排查

站内改版、域名迁移或參數收敛之後,URL 结构往往會發生變化,舊地址通過跳轉指向新地址。對人来说,浏览器會自動跟随,几乎無感;對搜尋蜘蛛来说,每一次跳轉都是一次獨立的請求,鏈越長,同样一份抓取资源能覆盖到的頁面就越少。

重定向如何消耗抓取入口

蜘蛛拿到一個 URL 後,如果返回 3xx,它需要再發起一次請求才能拿到真正的内容。三次跳轉就等于四次請求,最终只換来一個頁面的内容。当站点存在大量這類入口时,抓取队列會被一批批“過路請求”占满,新 URL 被發現和被訪問的节奏都會因此變慢。

另一個影响是入口归並。如果同一份内容同时存在 A→B→C 與 A→C 两條路径,蜘蛛需要多花時間才能確認终態,中間地址還可能被單獨当作一個可訪問地址處理,让入口統計變得模糊。

常见的几種跳轉形態

连續多跳

舊域名跳到新域名,新域名又跳到带 www 的地址,带 www 的地址再跳到统一小寫路径。這種串联往往来自不同时期的配置叠加,每加一层就多一次請求。建议把跳轉收敛到一跳,直接由源地址指向最终地址。

临时跳轉長期化

302、307 本意是临时跳轉,如果長期当作迁移手段使用,蜘蛛會反复回来確認原地址是否恢复。301、308 表達的是永久语义,更适合已经确定的迁移。關键不在于记住狀態碼编号,而在于让跳轉類型和實际意图保持一致。

循环與断鏈

A 跳到 B、B 又跳回 A,或者跳轉鏈末端的地址返回 404,都會让蜘蛛白跑一趟。前者通常出現在規則寫错或缓存未刷新的时候,後者多见于路由改版後遗留的舊規則。

排查顺序

  1. 從抓取日誌里筛出返回 3xx 的 URL,按出現次數排序,先看高频入口。
  2. 對每個入口用命令行工具跟随跳轉,记錄完整的 Location 鏈和最终狀態碼。
  3. 把鏈路長度大于一跳、以 4xx 收尾、或存在环路的记錄單獨列出。
  4. 對照服務器與 CDN 两侧的跳轉規則,確認是否存在重复配置。

收敛與日常维護

  • 迁移完成後,尽量让舊地址一跳到達终態,避免中間层長期保留。
  • 内鏈和 Sitemap 直接指向最终地址,不要指向會跳轉的舊路径。
  • 跳轉規則變更後清一次 CDN 缓存,防止舊規則繼續命中。
  • 把 3xx 的數量当作一個观测指标,定期看趋势,而不是等問题出現再處理。

什么时候跳轉是必要的

並不是所有跳轉都该被消除。地区或語言自動跳轉、登入態下的路径切換,本身有业務價值,處理重点也不同:尽量让蜘蛛看到稳定的預設地址,而不是让它在多個地区版本之間来回跳;需要被單獨识別的多語言版本,用獨立 URL 加 hreflang 标注来区分,而不是靠跳轉分流。

跳轉本身不是問题,問题是鏈路變長之後没人再回头整理。把入口收敛到一跳,通常比單纯提高抓取频率更有效。

重定向的整理不必一次做完,從日誌里的高频入口開始逐批收敛,观察几周抓取分布的變化,往往就能看到改善。