站点改版、換域名、調目錄之後,很多地址會经過一次甚至多次跳轉,才落到最终頁面。單次跳轉本身没有問题,怕的是鏈條越接越長,蜘蛛和用戶都要多走几程才能到位。
重定向鏈是怎么長出来的
多數鏈條不是一次决定的结果,而是每次調整只改了自己這一层,没人回头清理上一层的規則。
- 域名更換後,舊域名跳新域名,新域名又重新做了主域统一;
- HTTP 到 HTTPS 迁移时,中間又叠加了 CDN 的回源跳轉;
- 栏目改名时,舊栏目先跳到過渡目錄,過渡目錄再跳到新栏目;
- 批量工具生成的重定向規則没删,和新規則叠在一起;
- 内容下架後统一指到首頁,後来首頁本身也換了地址。
這些操作單獨看都合理,叠加在一起就變成了一條几段式的鏈條。
鏈條變長不只是多等一會
- 每跳一次都要重新發起請求,抓取预算會消耗在中間环节上;
- 落地時間被拉長,遇到回源慢的时候超时風險上升;
- 連結權重和頁面信号在每一跳里都會衰减,越往後越弱;
- 日誌里同一批地址會出現多條记錄,排查时容易看错對象;
- 用戶在舊連結上等待更久,中途跳出的人也會更多。
怎么查一條地址跳了几次
- 用命令行工具带跟随參數請求一個地址,看返回的跳轉序列,一眼能數出几段;
- 在浏览器開發者工具的 Network 面板里看文档請求,確認一條連結是否触發了多個 301 或 302;
- 從站内内鏈和 Sitemap 里各抽一批地址,直接請求,看最终落点是否就是想要的那個頁面;
- 在蜘蛛日誌里筛出 3xx 狀態碼,按地址分组,找出经常出現在中間环节的那些;
- 把現有重定向表導出,人工标出 A 到 B 到 C 這種多段结构,按優先級處理。
抽查的數量不用太多,几十條就能看出規則表整体的風格。如果抽查里多次出現三段以上,基本可以判断需要系統性清理。
處理时的几個判断
能压到一跳的尽量压
大部分鏈條可以压成一次直達。把舊地址直接指向最终地址,中間那一层不再接手。規則表里保留一行,比留着三行互相接力更好维護。
该保留的跳轉可以保留
有些舊路径承载過外部連結,确實值得保留一次跳轉。保留没問题,但让它直接落到最终頁,不要再经過中轉目錄。
別用前端跳轉代替服務端
meta refresh 和 JS 跳轉,對抓取和用戶来说都不如服務端 3xx 干净。能配服務端規則就別省這一步,尤其是批量地址。
顺手清理的几件事
- Sitemap 和内鏈只寫最终地址,不要把中間地址提交上去;
- canonical 指向最终地址,避免和跳轉结果打架;
- 長期用 302 代替 301 的地方,確認是不是真的只是临时;
- 重定向表定期复核,刪除已经不再使用的規則;
- 換域名、改目錄之後留一條變更记錄,方便後来人看懂。
一次干净的跳轉到最终地址,比一串说不清来歷的中轉更容易维護,也更容易让蜘蛛和用戶一次到位。
重定向是站点运营里的常备工具,不是一次性動作。每次改動之後顺手看一眼鏈條,比攒到几十條再集中排查要轻松得多。