站点做一次改版、換一次域名,或者把 HTTP 切到 HTTPS,舊地址往往不會一次性換成新地址,而是靠一條條重定向規則接力轉發。規則是分批加上去的,時間一長就容易出現 A 跳 B、B 跳 C、C 再跳 D 的情况。對訪客来说只是多等了一点,對搜尋引擎来说,每一跳都要重新解析一次,鏈路越長,最终地址被確認得越晚,中間任何一环出错,整條路径就断了。
重定向鏈通常是這样長出来的
- 域名或协议變更:老域名 301 到新域名,新域名下面又有一條 HTTP 跳 HTTPS 的規則,两段叠在一起就是两跳。
- www 與非 www 各留一條規則:两條規則互相指向,形成循环,或者绕一圈才回到起点。
- 目錄结构調整:文章從 /a/123.html 搬到 /news/123.html,舊規則只改了一半,剩下的還指向更早的地址。
- 尾斜杠與大小寫:先统一小寫,再统一加斜杠,本来是一件事却分成两跳。
- CDN、负载均衡、反向代理各寫一條:每一层都以為自己只加了一跳,加起来就是四五跳。
- 用脚本跳轉兜底:JS 跳轉和 meta refresh 混着用,蜘蛛拿到的往往不是最终頁面。
怎么把鏈路看清楚
- 用命令行看:curl 加上跟随跳轉的參數,打印狀態碼、跳轉次數和最终地址,一條命令就能看到整條鏈。
- 用浏览器看:打開開發者工具的 Network 面板,勾選保留日誌,輸入舊地址,逐個查看 3xx 請求返回的 Location 响應头。
- 抽查入口:首頁、導航、Sitemap、外鏈常用的地址各挑几個,看它們是不是直接落到终点。
- 看日誌:統計一段時間内 3xx 狀態碼的訪問量和来源,跳轉次數異常高的路径優先處理。
判断标准
- 正常情况一到两跳就結束,超過三跳就值得整理。
- Location 里尽量寫绝對地址,避免相對地址在不同层級被解析成意外目标。
- 長期有效的跳轉用 301,临时活動頁用 302,不要把 302 当永久規則一直挂着。
- 鏈路终点應返回 200,不能落在 404、软 404 或者又一個跳轉上。
- 检查是否存在循环,A 到 B 再回到 A,訪客最後看到的就是报错頁。
整理顺序
先處理高频入口,再處理長尾。把重复的規則合並,同一個目标只保留最上游的一條;把站内連結、導航和 Sitemap 全部改成最终地址,减少不必要的跳轉。老地址仍然要可用,只是让跳轉更短,不要图省事直接把規則删掉。
- 列出跳轉次數最多的路径,逐條確認它本该落到哪里。
- 合並同向規則,删掉中間环节和被绕過的舊規則。
- 回归測試:舊地址、带斜杠和不带斜杠、大小寫變体各跑一遍。
日常维護习惯
- 上线前把舊地址列表批量跑一遍检查,別等蜘蛛来發現。
- 改動重定向时留一筆记錄:時間、原因、影响范围。
- 每季度复查一次,尤其是換域名、切 CDN、調整栏目结构之後。
整理重定向的目标是让地址關系清楚、鏈路尽量短,方便訪客和蜘蛛到達同一處。具体的抓取與收錄仍由搜尋引擎决定,不必指望靠這一步拿到结果。