重定向是站点改版、換域名、調整目錄时最常见的處理方式,本身並不算错誤。但当一次跳轉變成三跳、四跳,甚至形成循环时,蜘蛛每次都要按顺序請求鏈路上的每一個地址,抓取资源被分摊到多個不會产生内容的 URL 上,真正需要被抓取的頁面反而被推後。
一次跳轉里蜘蛛到底做了什么
蜘蛛請求 A 地址,收到 301 或 302 响應,讀取 Location 头,再請求 B 地址。如果 B 又返回跳轉,它會繼續往下走。整個過程有几個结果:
- 抓取预算按請求次數消耗,鏈路越長,消耗越多;
- 跳轉目标會被记錄為發現路径的一部分,可能影响後續的归集判断;
- 中間地址如果長期返回跳轉,蜘蛛會持續回訪,形成無效訪問;
- 鏈路中出現 404、5xx 或超时,整條路径的價值都會被削弱。
對多數搜尋引擎来说,單條鏈路跳轉次數越多,越容易在中途停止跟進。停止之後,落地頁面就只能依赖其他入口被重新發現。
長鏈路通常是怎么堆出来的
协议與主机名的层层叠加
比如 http 跳 https、裸域跳 www、www 跳 m 或某個中間域名,一层层叠加後,一個入口地址可能要经過四次跳轉才能到達真實頁面。這類問题在上线 HTTPS 或切換主域时最容易出現,往往只配置了單段跳轉規則,没有做收敛。
改版與目錄迁移的遗留規則
舊目錄跳新目錄、舊參數地址跳静態地址、栏目頁跳栏目預設頁,這些規則如果分批上线且没有合並,就會把原本可以一步到位的跳轉串成鏈條。
跳轉對 URL 發現路径的影响
内鏈、Sitemap、外部連結都可能指向跳轉地址。当這些入口長期指向中間地址时,蜘蛛每次都要先走一遍鏈路,再决定是否抓取落地頁。更常见的情况是:
- Sitemap 里提交的是舊地址,蜘蛛每次抓取都先遇到 301;
- 内鏈仍指向带參數或舊目錄的地址,落地頁只被間接發現;
- 跳轉目标本身又有 canonical 指向第三個地址,抓取归集變得混乱。
跳轉是给浏览器和蜘蛛用的過渡手段,不适合作為長期入口。凡是被内鏈和 Sitemap 反复引用的地址,最好直接指向最终落地頁。
核對與收敛清單
- 用 curl -IL 或類似方式,對核心入口逐個查看跳轉序列,记錄每一跳的狀態碼和目标地址;
- 從抓取日誌中篩選出返回 3xx 的 URL,統計出現频率,高频項優先處理;
- 检查 Sitemap 中是否包含跳轉地址,如果有,替換為最终落地頁;
- 核對内鏈、導航、面包屑中的地址,确保指向最终 URL,而不是中間地址;
- 排查跳轉循环,尤其是带 www 與不带 www 之間互相跳轉的配置错誤;
- 301 與 302 按语义使用:永久迁移用 301,临时活動頁用 302,不要把临时跳轉長期挂在稳定入口上;
- 確認跳轉目标頁能正常返回 200,並且與 canonical 标簽指向一致。
落地时的几個注意点
收敛跳轉不是一次性的工作,改版、換域名、調整栏目都可能重新引入鏈路。比較稳妥的做法是:把跳轉規則集中维護,避免分散在多個配置里;上线後隔一段時間复查一次核心入口的跳轉序列;新增内鏈时直接使用最终地址。
另外,跳轉數量减少並不等于抓取一定變好。服務器响應時間、頁面体积、内鏈结构同样影响抓取节奏。跳轉收敛更像是把原本浪費在中間环节的請求收回来,让這些請求落到真正有内容的頁面上。