蜘蛛發現 URL 的路径有很多:外鏈、内鏈、Sitemap、主動提交。重定向是其中一條容易被忽略、却经常出現的路径。更換域名、調整目錄、合並頁面时,舊 URL 往往通過 301 跳到新地址。蜘蛛顺着跳轉找到新頁面,看似省事,但如果跳轉鏈太長,抓取效率會下降。
重定向對蜘蛛意味着什么
蜘蛛請求一個 URL,如果收到 3xx 狀態碼,會讀取响應头里的 Location,再對目标地址發起一次請求。這個過程會消耗抓取资源。單次跳轉通常没問题,鏈式跳轉(A 到 B 到 C 到 D)則會让蜘蛛多花几次請求。最终目标返回 200 时,蜘蛛可能把最终 URL 当作有效地址;如果中途出現 404、5xx 或循环,抓取就可能中断。
多長的重定向鏈開始變得危險
没有一個适用于所有網站的绝對數字。经驗上,超過 3 到 5 次跳轉後,蜘蛛放弃或降低優先級的概率會增加。不同搜尋引擎的容忍度不同,也和站点整体抓取预算有關。小站、新站更容易受影响。可以這样检查:用 curl 查看跳轉鏈,在浏览器開發者工具的 Network 面板观察請求,或者從 Sitemap 里抽查舊 URL 的最终去向。
常见的重定向問题
- 鏈式重定向:舊域名跳到舊目錄,再跳到新目錄,最後才到目标頁,每一层都是 301。
- 302 被長期使用:临时重定向如果一直不改成 301,蜘蛛可能繼續抓舊 URL,传递的信号也不够明确。
- 重定向到不相關頁面:把所有舊文章都跳到首頁,蜘蛛會認為目标頁與原始 URL 關系不大。
- 重定向循环:A 跳到 B,B 又跳回 A,蜘蛛反复請求,浪費抓取。
- 协议和域名不统一:HTTP 與 HTTPS、带 www 與不带 www 混用,會产生額外跳轉。
怎么整理重定向,让 URL 發現更顺
- 把舊 URL 直接 301 到最终目标,减少中間层。
- 统一协议和域名,比如全部使用 HTTPS 且带 www,用服務器配置一次跳轉到位。
- 重定向时尽量去掉跟踪參數,避免把一堆參數带到新地址。
- 定期用爬虫工具或日誌检查 3xx 比例,重点關注鏈式跳轉。
- 更新内鏈和 Sitemap,把舊 URL 換成新 URL,减少蜘蛛走重定向的机會。
重定向與 Sitemap、内鏈的配合
Sitemap 最好只放最终可訪問的 200 頁面,不要把重定向 URL 放進去。内鏈也一样,直接指向最终地址。這样蜘蛛不用绕路。如果舊 URL 有外鏈,保留 301 是必要的,但不要让站内連結繼續指向舊地址。站内連結指向舊地址,等于主動让蜘蛛多跳一次。
用日誌观察重定向的實际影响
在服務器日誌里篩選 301、302 狀態碼,看看哪些 URL 被频繁請求,跳轉目标是什么。如果某個重定向鏈被蜘蛛反复抓取,說明它還在被發現,需要尽快修正。同时關注抓取频次和狀態碼比例,如果 3xx 占比偏高,可能挤占有效頁面的抓取。
重定向是過渡手段,不是長期结构。让蜘蛛一次跳轉到達最终頁,比让它连續跳几次更省资源。
URL 發現不只是提交和連結,跳轉路径也是其中一环。把重定向鏈缩短、把协议和域名统一,能减少蜘蛛的無效請求,让抓取更集中在真正需要關注的頁面上。