頁面改版、栏目合並、域名調整、從 HTTP 迁到 HTTPS,這些動作都會留下重定向。單次跳轉本身没有問题,問题在于跳轉叠了好几层:A 跳到 B,B 又跳到 C,C 才返回 200。蜘蛛每遇到這種鏈路,都要多花几次請求才能拿到最终内容,抓取预算就這样消耗在路上。
跳轉鏈通常是怎么堆起来的
大多數跳轉鏈不是一次设計出来的,而是歷次調整层层叠加的结果:
- 早年用 HTTP,後来迁到 HTTPS,舊規則没有清理,形成 HTTP 到 HTTPS 再到带 www 的两跳;
- 带 www 與不带 www 两個版本都在對外使用,互相跳轉;
- 尾部斜杠、大小寫、舊參數格式各寫了一條規則,一個地址要连跳三次;
- CDN 配了一层跳轉,源站又配了一层,两层規則重复;
- 短鏈系統、活動頁、歷史推廣地址長期保留,且都指向已经變更過的地址。
這些規則單看都合理,叠在一起就變成了绕路。
自查可以從哪些入口入手
- 用抓取工具的跟随跳轉日誌,統計每個地址的跳轉次數分布,優先處理三跳以上的;
- 抽样訪問核心栏目和内頁地址,手動看 Location 鏈條,確認终点返回的是正常頁面;
- 對比服務器配置與 CDN 規則,找出重复定义的跳轉;
- 检查站内連結、導航、sitemap 里寫的是不是最终地址,而不是會被跳轉的舊地址;
- 检查歷史推廣、友鏈、投放物料里残留的舊地址。
為什么内鏈和 sitemap 要直接寫最终地址
跳轉适合当作兜底:舊地址仍然可達,用戶和老連結不至于撞到 404。但如果站内連結本身還寫着舊地址,等于每次抓取都要先走一遍跳轉再拿内容。把内鏈、面包屑、sitemap、canonical 统一到最终地址之後,跳轉只服務于站外和歷史入口,抓取路径會短一些。這里说的是减少無谓消耗,與是否被收錄、排名没有直接對應關系。
把跳轉当临时通道,而不是長期入口。規則留下的時間越長,越难判断哪條還能删。
處理时容易踩的几個坑
301 與 302 別混用
永久性的地址變更用 301,临时活動或短期調整用 302。長期用 302 顶着已经定型的结构變更,會让地址归属變得含糊。
別造出跳轉环
A 跳 B、B 又跳回 A,或者一個地址跳向自己,會让抓取直接卡住。批量改規則之後,務必把規則跑一遍再上线。
该保留的跳轉不要一刀切删掉
部分舊地址仍有外部連結和用戶收藏,直接删掉變成 404 未必合适。保留一條指向新地址的干净跳轉更稳。真正需要清理的是重复、绕路和互相矛盾的規則。
建议的检查节奏
每次改版或迁移上线後一周内看一次跳轉日誌;每季度抽样核心栏目,確認没有新增的多层跳轉;把跳轉規則的增删记入變更记錄,寫上時間和原因,避免半年後没人说得清哪條規則来自哪次調整。站点结构稳定之後,跳轉規則清單應该越来越短,而不是越来越長。