搜尋抓取

重定向鏈與蜘蛛抓取:一次跳轉要花掉多少抓取成本

改版、換域名、調整目錄时离不開重定向,但從蜘蛛的视角看,每一次 3xx 都是一次額外的請求。本文拆解鏈式跳轉、跳轉环、舊地址统一跳首頁這三種常见浪費,並给出内鏈與 Sitemap 的寫法建议和一份自查清單。

搜尋抓取

重定向鏈與蜘蛛抓取:一次跳轉要花掉多少抓取成本

做改版、換域名、調整栏目路径时,重定向是最常用的手段。但從蜘蛛的角度看,每一次 3xx 都是一次額外請求,需要在同一份抓取額度里多走一步。跳轉本身没有错,問题往往出在鏈太長、环太多、目标太随意。

蜘蛛遇到 3xx 时會發生什么

蜘蛛請求地址 A,收到 301 指向 B。它通常不會立刻把 B 当作本次结果,而是把 B 放進待抓队列,等下一轮再去取。也就是说,一條跳轉鏈上的每一跳都占用了一次請求。三步跳轉,就是三次請求換一個最终頁面。

301 與 302 在抓取上的差別

两者都會触發新的請求。区別在于長期信号:301 一般被理解為永久迁移,蜘蛛會逐步把索引和連結信号轉移到新地址;302 是临时狀態,蜘蛛可能繼續回訪舊地址,確認迁移是否恢复。如果已经确定不再回滚,長期挂着 302 只會让舊地址被反复訪問。

三種常见的跳轉浪費

鏈式跳轉

A→B→C→D 這種结构,多见于多次改版叠加:http 到 https 跳一次,带 www 到不带 www 再跳一次,舊栏目到新栏目又跳一次。蜘蛛要跟着走完才知道最终頁面,中間每一跳對用戶和蜘蛛都是等待。處理办法是把中間层規則改成直接指向最终地址,让鏈路收敛到一跳。

跳轉环

A→B、B→A,或者 A→B→C→A。蜘蛛识別到循环後會停止跟随,但此前投入的請求已经花掉,這個地址也拿不到任何内容。跳轉环多數来自配置冲突,比如 CDN 與源站各配了一條方向相反的規則,排查时要两邊一起看。

舊地址统一跳首頁

這是代價最大的一種。舊的詳情頁、分類頁全部 301 到首頁,蜘蛛請求的是具体内容,拿回来的却是首頁,這次抓取基本没有产出新信息,也容易让這些地址被当作首頁的重复入口。更稳妥的做法是:内容還在,就跳到内容對等的新地址;内容确實删了,用 404 或 410 明确告知,比硬塞首頁干净得多。

内鏈與 Sitemap 里该寫哪個地址

内鏈、Sitemap、canonical 都應当直接指向最终地址,而不是跳轉前的地址。

  • Sitemap 里寫舊地址,等于让蜘蛛每次都要多走一步才能到達内容。
  • 站内連結指向會跳轉的 URL,會让抓取路径變長,尤其在列表頁和分頁中影响會被放大。
  • canonical 指向一個會跳轉的地址,信号传递容易變得含糊,最好直接寫最终 URL。

一份简單的自查清單

  1. 抽一批重要 URL,用抓取工具或命令行看跳轉层數,超過一跳的记下来。
  2. 检查 http 到 https、www 與非 www 是否只保留一次跳轉。
  3. 检查是否存在互跳、循环跳轉,CDN 與源站規則是否冲突。
  4. 检查舊 URL 是否被统一指向首頁,能否改為對等内容頁。
  5. 检查内鏈與 Sitemap 是否還寫着跳轉前的舊地址。
  6. 看服務器日誌里 3xx 的占比,長期居高不下通常說明規則没有收敛。
跳轉是過渡手段,不是長期狀態。改版完成、观察一段時間後,應尽量让跳轉层數收敛到一跳,並让内鏈直接指向新地址。

小结

重定向不會直接導致頁面無法被抓取,但它會實打實地占用抓取次數、拉長 URL 發現路径。把跳轉层數压到最少、让站内連結和 Sitemap 直指最终地址,是成本最低也最容易被忽略的一項基础優化。