站点改版、更換域名、啟用 HTTPS、统一 www,每一次調整都可能是合理的,但每一次也都容易留下一條跳轉。單看一條規則没什么問题,問题是它們會叠加:老地址跳到舊域名,舊域名跳到 HTTPS,HTTPS 再跳到带 www 的地址,最後還要补一個结尾斜杠。訪客要多等几秒,蜘蛛要多抓几次,目标頁還不一定是真正想给的那個。跳轉鏈不是配置错誤,而是長期没人整理留下的帳。
跳轉鏈是怎么攒出来的
多數跳轉鏈並非一次设計出来的,而是歷次調整各留一层,慢慢串成一條线。以下几種最常见。
- 协议與域名叠加:http 版跳到 https 版,https 版又跳到带 www 的版本,一個請求走完两條 301 才到终点。
- 改版遗留:第一次改版把 A 跳到 B,第二次改版把 B 跳到 C,A 就成了一條两跳的鏈子。改版次數越多,鏈子越長。
- CMS 與插件自動补跳:插件把 /page 补成 /page/,而服務器規則又把 /page/ 指向別處,两邊打架。
- 临时跳轉被長期占用:302、307 本意是临时使用,结果挂着一年多没換,搜尋引擎和訪客都拿不到明确信号。
- 跳轉目标本身有問题:终点返回 404,或者一刀切全部跳到首頁,鏈子走完了,内容却没了。
- 循环跳轉:A 跳 B,B 又跳回 A,浏览器直接报错,訪客什么也看不到。
自查:先把鏈子摸清楚
排查跳轉鏈不需要复杂工具,關键是按顺序看响應碼和 Location 头。
- 命令行抽查:用 curl -I -L 地址 跟進整條鏈,观察每一次的响應碼和 Location。也可以用 -w 輸出跳轉次數,快速判断哪條鏈超過一跳。
- 浏览器開發者工具:打開 Network 面板並勾選保留日誌,刷新頁面,看文档請求後面跟着几條 3xx,每一跳指向哪里。
- 整站抓一遍:用爬虫工具跑全站,導出所有 3xx 地址列表,重点看跳轉次數大于 1 的條目。
- 翻服務器日誌:統計 3xx 狀態碼的占比和分布,看哪些老地址仍在被频繁請求。持續有流量的跳轉地址,說明源头連結還没更新。
- 检查連結源头:站内導航、正文内鏈、站点地图、投放連結里,是否還在使用跳轉前的老地址。
整改时的几條原則
- 一跳到位:把中間环节合並成一條 301,直接指向最终地址,不做無意义的接力。
- 從源头改起:站内能改的連結尽量換成最终地址,减少對跳轉規則的依赖。跳轉是兜底,不是常態。
- 分清 301 和 302:确定不再恢复的用 301,短期活動或临时维護用 302、307,別拿临时跳轉当長期搬家方案。
- 不做全站無差別跳轉:把所有舊地址都指向首頁,等于告诉訪客和搜尋引擎這些頁面已经不存在了,用戶也找不到想看的内容。
- 少用 JS 和 meta refresh:這两類跳轉的處理不如 HTTP 响應头直接,鏈路也更难排查。
- 改版後清一次帳:整理一份跳轉清單,记錄源地址、目标地址、狀態碼和添加時間。已经没流量的舊規則,该下线就下线。
跳轉是给舊地址留的後路,不是長期通行方案。鏈子短一点,訪客到得快一点,蜘蛛也少跑几趟。
上线後別忘了复查
調整完成後的两三周内,回头看一次日誌里 3xx 的數量和分布,確認没有新增長鏈;抽查几個重点頁面,數一下從舊地址到终点的跳轉次數;再確認终点返回 200,頁面内容與预期一致。如果某條鏈因為客观原因暂时合並不了,至少把它控制在一跳以内,並在清單上标注清楚,免得下次改版又往上叠一层。