站点改版、換域名、調整栏目路径之後,重定向往往是第一批被加上去的東西。加完之後很少有人回头再看一眼,于是一條本该一站直達的跳轉,慢慢變成了三跳、四跳的鏈條。對普通訪客来说,多等几百毫秒未必有明顯感觉;對搜尋蜘蛛来说,每一次跳轉都是一次額外的請求和一次等待,抓取预算就是這样一点点被磨掉的。
重定向鏈是怎么長出来的
大多數鏈條都不是刻意设計的,而是几次改動叠加的结果。常见的来源有這几類:
- 換域名时做了 A 到 B 的跳轉,後来又上了 HTTPS,鏈路變成 A 到 B 再到 C;
- 栏目合並时先跳到舊列表頁,舊列表頁里又留着一條跳新列表頁的規則;
- 给頁面统一加尾斜杠,而带斜杠的地址本身又被另一條規則處理了一次;
- 大小寫不统一,同一批地址里既有大寫版本又有小寫版本,各自设了規則;
- HTTP 到 WWW、WWW 到 HTTPS 的先後顺序没有理顺,中間多出一跳;
- 临时跳轉被当成永久跳轉長期使用,鏈路一直没人清理。
這些情况單獨看都不算嚴重,問题在于它們會互相叠加。一個几年前做過改版的頁面,今天可能還挂着三條規則。
自查從哪几個入口開始
重定向鏈的排查不需要很复杂的工具,按下面的顺序走一遍,基本能覆盖大部分問题:
- 先從抓取日誌里筛出返回 3xx 狀態碼的 URL,按出現次數排序,優先處理高频的那几條;
- 用爬虫工具跑一遍全站,導出跳轉路径,重点看两跳以上的鏈條;
- 检查站点地图、主導航、正文内鏈里是否仍然直接寫着舊地址,這些位置應该同步更新;
- 抽样几條鏈,看响應头里的 Location 字段指向的是中間地址還是最终地址;
- 確認 robots.txt 没有意外挡住鏈路中間的某個环节,否則蜘蛛可能连跳轉都走不完。
日誌和工具各看什么
日誌告诉你蜘蛛實际遇到了什么,爬虫工具告诉你理论上存在多少條鏈。两邊對不上是常有的事:有些地址早就没内鏈指向,蜘蛛却因為外鏈或歷史记錄還在訪問;也有些鏈路藏在導航里,工具不跑一遍根本發現不了。把两邊的清單交叉比對,優先級自然就出来了。
處理原則:能一站直達就別分两步
整改时的方向很明确,尽量让每一组跳轉只保留一跳。
- 把 A 到 B 再到 C 合並成 A 直接到 C,刪除中間那條規則;
- 站点地图、内鏈、對外發布過的連結同步更新,不要長期依赖跳轉兜底;
- 确實需要保留的舊地址统一用 301,避免 301、302、307 混用;
- 不要用 meta refresh 或 JS 跳轉来替代服務端跳轉,蜘蛛對這類跳轉的處理並不稳定;
- 跳轉鏈上不要串登入驗證、地区選擇這類會打断訪問的环节。
几類容易被漏掉的跳轉
有些跳轉不在源站配置里,翻配置文件是找不到的:
- CDN 或反向代理层自行添加的跳轉,源站看到的請求已经是處理後的结果;
- 移動端獨立域名與主站之間的互跳,两條鏈路可能方向還相反;
- 短連結服務生成的地址,一次轉發背後可能是好几层;
- 带參數版本和干净版本之間的互跳,容易形成循环。
跳轉本身不是問题,跳轉鏈才是。一條鏈每多一跳,就多一次蜘蛛中途放弃的可能。
把它放進定期巡检清單
重定向鏈不會自己消失,只會随着改動慢慢變長。建议在每次改版、換域名、調整目錄之後的一周内跑一次检查,之後按季度做一次抽样复核。检查的重点不必是全站,抓取日誌里的高频 3xx 地址加上爬虫工具導出的長鏈清單,已经足够覆盖大部分風險。