改版、換域名、去掉 www、把 HTTP 跳 HTTPS,這些操作單看都没問题,問题往往出在跳轉叠加:A 跳到 B,B 又跳到 C,C 才到最终頁面。對訪客来说只是慢了一点,對蜘蛛来说却可能意味着把抓取時間花在中間环节上,甚至中途放弃。
跳轉鏈是怎么攒出来的
多數情况不是有人故意加了好几层,而是每次改動只處理了眼前這一跳,舊規則没清理,鏈條就越来越長。
- 換域名时老的 301 規則留在配置里,新域名内部又有自己的一套跳轉規則;
- 頁面改版把 /old/ 指向 /new/,後来 /new/ 又改成 /newer/,但第一條規則忘了删;
- 统一末尾斜杠、统一大小寫、加 www 各寫了一條規則,串起来就是三跳;
- 内容合並时把多個頁面都指向同一個中間頁,再由中間頁指向最终頁。
自查的實际办法
用命令行逐條走一遍
取一批站内連結和常见入口地址,用 curl -I -L 观察每一跳的狀態碼和 Location 头,看看是否存在超過一跳的 301 或 302,鏈條里是否夹着 meta refresh、JS 跳轉這類需要解析才能繼續的方式。
從服務器日誌里找线索
看一下日誌中 301、302 狀態碼的占比,以及同一路径反复出現的情况。如果某個舊地址長期被訪問、每次都触發跳轉,說明站内或站外還有連結指着它,光靠服務器規則解决不了,得把指向它的連結一起改掉。
抽查重点頁面
- 首頁和主要栏目入口;
- 曾经改過栏目名的分類頁;
- 有外部連結的舊文章地址;
- 站点地图和分頁列表里輸出的連結。
修复的顺序
- 先确定每個頁面的最终地址並固定下来,不要反复改;
- 把多层鏈條合並成一次跳轉,舊地址直接指向最终地址;
- 刪除鏈條中間那些過渡頁上的跳轉規則;
- 更新站内連結和站点地图,让它們直接輸出最终地址,减少不必要的绕行;
- 永久迁移用 301,临时活動結束後及时撤掉 302 規則,別長期留着。
一点提醒:跳轉不是越多越保險,鏈條越長,越容易在某一跳断掉。能直接指向最终地址的,就別绕道。
修复之後要驗證什么
重新走一遍 curl,確認每條只剩一跳;再看日誌里 301、302 的數量是否下降;抽样核對最终頁面的 canonical 與站点地图地址是否和最终 URL 一致。如果最终地址本身還带着大小寫不一致或多余參數,等于又埋了一個新的分叉点。
和蜘蛛的關系
蜘蛛對跳轉是能處理的,但每一跳都要重新發起請求、重新等待响應。站内連結如果大量经過跳轉,相当于自己给自己設定了减速带,抓取节奏自然會慢下来。把跳轉收干净是基础工作,不保證收錄,也不保證排名,但至少不會让蜘蛛把時間浪費在中間頁上。