搜尋抓取

重定向鏈怎么影响蜘蛛抓取:几次跳轉之内還能顺利跟到

站点改版、換域名都會留下舊地址,重定向是常见處理方式。但跳轉鏈路的長短、301 與 302 的選擇、落点是否可抓取,都會改變蜘蛛的抓取路径。本文梳理鏈式跳轉的實际成本、几種容易把蜘蛛带偏的配置,以及内鏈、Sitemap 與狀態碼的自查顺序。

搜尋抓取

重定向鏈怎么影响蜘蛛抓取:几次跳轉之内還能顺利跟到

站点改版、換域名、調整栏目结构,都會留下舊地址。為了让訪問者和蜘蛛都能走到新頁面,通常要配置重定向。但重定向不是配置完就結束,跳轉鏈路的長短、狀態碼的選擇、落点是否可抓取,都會直接影响蜘蛛能不能顺利完成這一轮抓取。

蜘蛛遇到 3xx 之後做了什么

当蜘蛛請求一個 URL 拿到 3xx 响應时,它不會立刻放弃,而是讀取响應头里的 Location 目标地址,再發起一次新的請求。這次請求和第一次一样,要重新经過解析域名、建立连接、等待响應等环节。也就是说,跳轉不是零成本的,它相当于让蜘蛛多抓了一個頁面,只不過這個頁面没有内容。

拿到最终頁面的 200 响應之後,蜘蛛才開始解析正文和連結。如果同一批 URL 都带着跳轉,抓取预算就會被大量消耗在中轉环节,真正的内容頁面反而抓得更少。

鏈式跳轉:每一跳都要重新排队

比單次跳轉更麻烦的是鏈式跳轉。常见的情况是 http 跳到 https,https 的裸域再跳到 www,www 又跳到带語言目錄的地址,一條鏈走完要三到四次。對這種地址,蜘蛛通常不會無限跟下去,跳轉次數過多时可能中途停止,最终頁面就進不了抓取范围。

即便蜘蛛一路跟到底,中間每一跳的地址也會被记錄,日誌里出現大量 301,看上去抓取很活跃,實际覆盖到的獨立頁面並不多。

301 和 302 不能用混

301 表示永久迁移,蜘蛛會逐步把舊地址替換成新地址,把已经积累的信号轉移到目标頁。302、307 表示临时跳轉,蜘蛛通常保留舊地址繼續观察,不做替換。如果長期用 302 承担永久迁移的职责,舊地址會一直留在抓取队列里,新地址也得不到稳定確認。

還要留意 302 的落点。有的站点把無结果頁跳到列表頁,或者把需要登入的地址跳到首頁,這類跳轉一旦被大量内鏈指向,蜘蛛就會反复跟到同一個頁面,形成無效抓取。

几種容易把蜘蛛带偏的跳轉

  • 循环跳轉:A 跳到 B,B 又跳回 A。蜘蛛跟几次後會放弃,两個地址都难以被正常處理。
  • 超長鏈條:轉手四五次以上,中途被放弃的概率明顯上升。
  • 跳到不可抓取的地址:跳轉目标被 robots.txt 拦截,或本身返回 404、410,等于白走一趟。
  • 跨协议跨域叠加:http 到 https、裸域到 www、主域到子域同时存在,鏈路被越拉越長。
  • 落点频繁變化:目标地址不稳定,蜘蛛每次跟到的结果都不一样,很难判断哪個是正式地址。

内鏈和 Sitemap 该指向哪一版

做重定向的同时,站内剩下的連結要同步更新。理想狀態是站内連結直接指向最终地址,让蜘蛛一步到位;重定向只留给外部連結、歷史收藏和已经進入索引的舊地址。如果内鏈還大量指向跳轉地址,等于人為把抓取路径拉長。

Sitemap 里同样只放最终地址。把跳轉地址寫進 Sitemap,會让抓取队列里混入一批永遠返回 3xx 的 URL,白白占用額度。同时要確認 Sitemap、内鏈、canonical 指向的是同一個版本,避免给出互相矛盾的信号。

自查重定向鏈的顺序

  1. 從日誌里筛出狀態碼為 3xx 的請求,按 URL 匯總,看哪些地址被反复抓取。
  2. 對這些地址用命令行工具或抓取工具完整跟一遍,记錄跳轉次數和最终狀態碼。
  3. 重点检查落点:是否返回 200、是否被 robots.txt 允许、是否是伪装成正常頁面的软 404。
  4. 检查内鏈和 Sitemap,把指向跳轉地址的連結替換成最终地址。
  5. 確認狀態碼選擇正确:永久迁移用 301,真正临时的场景才保留 302。
重定向是過渡手段,不是長期方案。鏈路越短、落点越稳定,蜘蛛把時間花在内容上的比例就越高。