搜尋抓取

重定向鏈與抓取损耗:跳轉层數、中間地址與落点核對

站内一次跳轉,對用戶只是地址切換,對蜘蛛却意味着多一次請求。本文從日誌特征入手,梳理协议升級、域名统一、短鏈等常见重定向来源,给出核對跳轉层數與最终落点的顺序,帮助站点减少無效抓取。

搜尋抓取

重定向鏈與抓取损耗:跳轉层數、中間地址與落点核對

站内出現一次跳轉,用戶可能只是多等几百毫秒,對蜘蛛来说却是一次額外的請求。如果同一條地址要跳三四次才落到正文,抓取预算和服務器连接资源都會被摊薄。這一篇只谈重定向鏈本身:它怎么出現在日誌里,常见的来源有哪些,以及核對落点时该按什么顺序检查。

蜘蛛眼里的一次跳轉算一次抓取

当蜘蛛請求 A 地址拿到 301 或 302,它通常需要再發起一次請求去拿最终地址。跳轉层數越多,拿到正文的時間越晚,中間還會占用连接和队列位置。對于抓取频率本身不高的站点,几层跳轉叠加上去,容易让重要頁面在队列里多等一轮。

需要注意,301 一般會被缓存並長期生效,302 常被当作临时跳轉反复確認。日誌里如果看到同一批地址反复出現 302,值得回头检查服務端配置是否寫成了临时跳轉。

日誌里值得留意的几個特征

  • 同一 URL 在短時間内连續出現两條记錄,狀態碼分別為 301、302 和 200,說明是一次跳轉後的落点抓取。
  • 中間地址本身没有内鏈、也不在 Sitemap 里,却持續被訪問,通常是外鏈或舊地址残留。
  • 跳轉鏈末端返回 404 或 5xx,這種情况會浪費一次完整的抓取路径。
  • 不同 UA 拿到的跳轉结果不一致,例如移動端與桌面端落到不同地址。

常见重定向来源

协议與域名统一

HTTP 到 HTTPS 的升級、带 www 與不带 www 的切換,是最常见的两類。如果内鏈里仍混着 HTTP 地址,蜘蛛每次進站都要多走一跳。建议把内鏈、Sitemap、canonical 三處统一到同一個版本。

末尾斜杠與大小寫

目錄頁带不带末尾斜杠、路径大小寫不一致,很多服務器會自動跳轉。單看一次跳轉影响有限,但当這些變体分布在大量内鏈里,累积起来的額外請求並不小。

短鏈與活動地址

营销短鏈、活動临时地址通常用 302,跳轉目标還可能随活動結束而更換。蜘蛛抓到的落点會随配置變化,核對时應以最终稳定地址為准。

移動端與多語言跳轉

按 UA 或按 IP 跳轉到 m 站、語言版本,容易出現桌面蜘蛛與移動蜘蛛拿到不同 HTML 的情况。如果跳轉是 JS 触發的,還要確認渲染後能否拿到目标連結。

核對顺序建议

  1. 先列出被大量内鏈引用的中間地址,判断是不是舊域名或舊路径。
  2. 检查 Sitemap 提交的是不是最终地址,確認没有把跳轉地址寫進去。
  3. 抽查几组跳轉鏈,记錄层數與落点狀態碼,確認末端返回 200 且内容是目标頁面。
  4. 核對 canonical 與跳轉目标是否一致,避免出現 A 跳 B、B 又声明 A 為規范地址的情况。
  5. 跳轉鏈尽量不超過一跳,多余的中轉在内鏈层面替換掉。

什么时候不必强求全部收敛

老域名、歷史外鏈带来的跳轉,短期無法清理干净,保留一跳作為兼容是合理的。重点是把站内可控的部分——内鏈、Sitemap、導航——稳定指到最终地址,让新产生的抓取從入口就落在目标頁上。

跳轉本身不是問题,問题是同一條路径被反复走。把站内入口收干净,通常比纠结外鏈上残留的舊地址更有效。