站点改版、栏目調整、域名切換,都會产生重定向。單個跳轉本身没問题,麻烦的是跳轉叠跳轉:A 跳到 B,B 又跳到 C,用戶和蜘蛛每走一步都要多等一次請求。這條鏈越長,抓取预算被消耗得越多,頁面的最终地址也越容易被誤判。
什么样的跳轉算“鏈路過長”
通常建议尽量控制在一跳以内,超過两三次就该检查了。下面几種情况最容易堆积层級:
- 舊域名整体 301 到新域名,新域名内部又有一层栏目改版跳轉;
- HTTPS 升級时保留了 HTTP 到 HTTPS 的跳轉,同时舊的 http 頁面又指向带 www 的地址;
- 尾部斜杠、大小寫、带不带 index.html 各寫一條規則,彼此互相指向;
- 歷史上反复改版,每次都在上一條規則後面追加,没人清理。
自查的具体做法
第一步:抽一批入口地址實测
挑首頁、栏目頁、詳情頁、舊文章地址各若干條,用命令行工具查看响應头里的 Location,或者用浏览器開發者工具的網絡面板看請求序列。重点不是看有没有跳轉,而是看跳了几次、每一次跳到哪里。
第二步:用抓取工具批量跑
把站点地图里的 URL 導出来,批量請求並導出跳轉鏈报表。几百條地址跑一遍,通常能發現一批共性問题,比如某條規則寫得過于宽泛,把整段路径都套了進去。
第三步:比對服務器日誌
訪問日誌里 301 和 302 的响應會记錄来源與目标。观察一段時間,能看出蜘蛛是否在反复請求同一個舊地址、是否總在跳轉鏈中間停下。
修复时的几個原則
- 直接指向终点。把中間环节删掉,让舊地址一次跳到最终地址,而不是逐級传递。
- 内部連結不经過跳轉。站内導航、正文連結、站点地图里都應寫最终地址,跳轉只留给外部引用和歷史遗留入口。
- 该用 301 就別用 302。永久性變更用 301,临时活動、測試之類的场景才用 302,別让临时跳轉長期挂着。
- 排查循环。A 跳 B、B 跳 A 會直接让抓取失敗,這類規則要在測試环境先驗證。
- 規則合並。能用一條規則覆盖的情况,就不要寫十條零散條目。
上线之後的维護习惯
- 每次改版或栏目調整後,把新增的重定向規則登记在文档里,寫明生效時間和原因;
- 定期(比如每季度)复查一次規則表,删掉已经確認没有流量的舊條目;
- 站点地图和内部連結發布前做一次校驗,避免新頁面一上线就带着跳轉;
- 關注日誌中跳轉响應占比的變化,突然升高通常意味着出現了新問题。
重定向是過渡手段,不是長期方案。規則表越干净,蜘蛛和訪客要走的路就越短。