改版、換域名、調整栏目路径之後,重定向往往是临时补丁。時間一長,补丁叠补丁,就會出現 A 跳到 B、B 跳到 C、C 才是最终頁面的情况。對用戶来说只是多等一會儿,對搜尋引擎抓取来说,每一次跳轉都要重新發起請求,鏈路過長會稀释传递效果,也容易在日誌里制造大量非 200 狀態。
重定向鏈是怎么堆起来的
常见来源有几類,多數不是故意设計,而是分阶段調整後没有回头合並。
- 舊域名先 301 到新域名,新域名又因為路径調整再 301 到新路径;
- HTTP 跳到 HTTPS,HTTPS 再跳带 www 或去 www,最後才到内容頁;
- 栏目改名後,舊栏目跳到新栏目,新栏目又跳到大類目;
- 為了統計点击,中間加了一层跳轉頁;
- 早期用 302 临时跳轉,後来忘记改成 301,連結一直停留在中間地址。
自查时重点看什么
不需要复杂工具,選一批有代表性的 URL,覆盖首頁、栏目頁、詳情頁、舊活動頁,逐個检查跳轉過程。可以用浏览器開發者工具查看網絡請求,或用 curl 查看响應头。
检查以下項目:
- 跳轉次數:從舊地址到最终 200 頁面,超過一次 301 就值得優化;
- 狀態碼:長期跳轉用 301,临时活動用 302 或 307,但活動結束要清理;
- 最终地址:是否返回 200,是否和站内連結、sitemap 中的地址一致;
- 循环和断鏈:有没有 A 跳 B、B 又跳 A,或者跳到已经不存在的頁面;
- 协议與主机名:http、https、www、非 www 是否在一開始就统一,不要留到最後一步;
- 大小寫與结尾斜杠:同一路径的不同寫法是否都收敛到同一個最终 URL。
處理原則:一步到位,内部連結同步更新
最理想的狀態是,舊 URL 一次 301 直接指向最终 URL,中間不经過任何中轉。做法不复杂:把重定向規則按最终目标重寫,删掉中間跳轉;同时把站内連結、導航、面包屑、sitemap 中的地址统一替換為最终地址。重定向只负责承接外部舊連結和用戶书簽,不應该成為站内主要連結方式。
如果存在多級域名或协议跳轉,優先在服務器或 CDN 层把 http 到 https、裸域到 www 的規則合並,确保第一次跳轉就同时完成协议和主机名统一。
驗證與日常维護
改完規則後,重新抽查一批舊 URL,確認鏈路缩短、最终 200。之後可以定期看服務器日誌中 301、302 的請求量:如果某些舊地址長期占據較高比例,說明要么外部連結還在用,要么站内還有漏改的入口。把高频舊地址列出来,優先修正。
重定向是搬迁时的桥,不是長期居住的房子。桥越多,走起来越慢,也越容易在某一段断掉。
最後提醒一点:每次改版或栏目調整前,先列出受影响 URL 清單,規划好最终地址,再寫重定向。不要等上线後才靠日誌反推,那样很容易留下层层跳轉和無人维護的中間頁。