改版、換域名、加 www、從 HTTP 迁到 HTTPS,這几件事單獨做都不难,难的是它們叠在一起。不少站点在迁移完成後,訪問一個舊地址要经過三到四次跳轉才落到真正的頁面上,而站長自己因為浏览器地址栏最终顯示正确,往往察觉不到。
跳轉鏈是怎么攒出来的
典型的鏈條長這样:用戶或蜘蛛請求 http://example.com/old-page,服務器先 301 到 HTTPS 版本,再 301 到带 www 的域名,接着 301 到新的栏目路径,最後可能還因為尾斜杠再补一跳。每一跳都是獨立的 HTTP 往返,浏览器要串行等待,蜘蛛也要為同一個目标地址多花几次請求。
鏈條不是一次形成的,而是一层层叠上去的:先上了 HTTPS,規則寫成“所有 HTTP 跳 HTTPS”;第二年換了域名,又加一條“所有舊域名跳新域名”;後来栏目改版,頁面級重定向再叠一遍。每條規則單看都對,串起来就變長了。
跳轉鏈的實际代價
- 抓取预算被摊薄:一次請求能拿到的内容,現在要用三四次請求才能確認终点。
- 首字节時間變長:移動網絡下,多跳带来的延迟是能被用戶感知的。
- 信号传递衰减:跳轉层級越多,鏈路上出現中断、寫错目标地址的概率越大。
- 參數容易丢:带 UTM 或篩選參數的地址在多跳之後,參數常常被規則吃掉。
- 排查變难:日誌里同一目标出現多個来源地址,統計口径容易混乱。
自查的具体做法
- 從日誌或站点地图里抽样,挑出訪問量靠前、外鏈較多、以及近期改過路径的地址,各取二三十條。
- 用 curl -I -L 或带重定向追踪的工具逐條請求,观察每一跳的 Location 头,把跳轉次數记下来。
- 重点看四類地址:HTTP 入口、舊域名入口、带 www 與不带 www 的入口、以及结尾带不带斜杠的入口。
- 检查终点:跳轉後的頁面是不是 200,是不是原路径對應的内容,有没有被统一甩到首頁。
- 把超過一跳的地址整理成清單,标注来源是外鏈、站内連結、站点地图還是歷史文章配图。
常见的几種坏形態
- http → https → www 三段式,其實可以合並成一次跳轉。
- 舊域名 → 新域名 → 新路径 → 去掉尾斜杠,四跳才到。
- 跳轉目标本身是 404 或 410,等于把用戶送進死胡同。
- 大量不同舊地址全部跳到首頁,容易被视作软 404。
- 跳轉規則里带了域名大小寫或端口差异,造成同一目标反复横跳。
修正时把握几條原則
第一,入口归一:HTTP、無 www、带端口這些變体,在服務器或 CDN 层一次性轉到唯一的規范地址。第二,路径保真:改版产生的頁面級跳轉,尽量保留原有目錄结构和參數。第三,按重要性排序:先修有外鏈、有流量、有排名的地址,長尾可以分批處理。第四,修完记得回头改站内:内鏈、站点地图、RSS、歷史文章中寫死的舊地址,都要一並替換,否則鏈條還會被重新造出来。
跳轉鏈不是一次性的迁移問题,而是每次動域名、動协议、動目錄结构时都可能新增的遗留項。把它当成改版流程里的固定收尾動作,比事後翻日誌找問题省事得多。
建议的巡检节奏
改版或迁移後的前两周,每周抽一次样本;稳定之後,按季度用同样的方法复查一轮,同时留意日誌里出現频率較高的 301 来源地址。把每次的抽检结果和修正记錄留存下来,下一次動结构时就有對照。