站点改版、換域名、調整栏目结构,几乎每個站点都會留下重定向。它像一條條临时通道,把用戶和搜尋蜘蛛從舊地址带到新地址。通道本身不是問题,問题在于通道太長、太乱,最後连做站点运营的人自己都说不清一個舊URL要跳几次才能落地。
一跳一成本,重定向不是免費的
每一次跳轉,搜尋蜘蛛都要重新發起請求、解析响應头、再决定下一步。單看一跳,開销可以忽略;但如果站内有几萬個URL都挂着两三层跳轉,抓取预算就被大量消耗在没有内容的中間环节上。更麻烦的是,鏈條越長,中途出現超时、5xx、循环跳轉的概率越高,蜘蛛很可能在某一跳就停下来。
用戶端也一样。移動網絡下每多一跳就多一次等待,跳出率上升是很自然的结果。
先分清哪些跳轉是必要的
可以長期保留的
- 域名切換後,舊域名到新域名的整站301。
- http到https的整站跳轉。
- 栏目合並後,舊栏目頁到新栏目頁的301。
- 带追踪參數的URL收敛到規范URL。
應该逐步清理的
- 舊地址跳到中間地址,中間地址再跳一次的两跳鏈路。
- 本應临时的302,被当成永久方案用了好几年。
- 已确定下线的頁面,被统一指到首頁或频道頁。
- 大小寫、结尾斜杠、www與實际域名之間的重复跳轉。
让鏈條收敛的三個動作
- 直接指向终点。把A到B再到C改成A直接到C,B到C保留,让每條鏈路最多一跳。
- 内鏈和站点地图只寫终点地址。導航、正文内鏈、站点地图、canonical标簽统一使用最终URL,不再引用舊地址。
- 固定一種規范形態。域名是否带www、结尾是否带斜杠、大小寫規則,在服務器层就统一,不要让蜘蛛先訪問一種形態再被跳一次。
一個常见誤区:把死鏈都指到首頁
頁面确實下线了,但它的内容並不等于首頁。用301指過去,等于告诉搜尋引擎這是一次内容替換。大量這類跳轉會让首頁承担不该承担的權重與相關性信号,也容易让蜘蛛反复返回同一地址。更合适的做法是:有明确替代内容就301指向它,没有就用410或404明确告知。
判断标准很简單:如果用戶從舊地址跳過去之後,看到的不是他原本想找的内容,這個跳轉就不该用301。
怎么查:日誌加抽样
- 從服務器日誌里筛3xx响應,按跳轉目标地址分组,看哪些目标被反复請求。
- 抽样爬取站内几千個URL,记錄跳轉次數,超過两跳的單獨列出来。
- 检查跳轉终点是否還是3xx,或者已经跳到404、5xx。
- 看是否存在A到B、B到A這類循环,通常出現在配置错誤或CDN與源站規則冲突时。
改版期的做法
改版前先梳理一份重定向映射表,一行一個舊URL對應一個最终URL,上线前做一次全量校驗。上线後的一到两個月,把這張表当成活文档维護:新增的舊地址随时补上,已经没人訪問的舊地址可以逐步改為410。別让它變成一份没人敢動的歷史遗留清單。
重定向鏈本身不复杂,复杂的是没人负责收敛。把跳數当成一個可观测的指标,隔一段時間看一眼,URL發現這件事就會顺畅很多。