改版換域名、合並栏目、調整 URL 结构,這些操作几乎都會留下重定向。只跳一次通常没問题,麻烦的是跳轉一层套一层:老的入口指向一個中間地址,中間地址再跳去最终頁。對訪客来说只是多等一會儿,對抓取来说則要多消耗几次請求,而且中間环节一旦失效,整條鏈路就断了。
多重跳轉的常见来源
- http 到 https、带 www 到不带 www、尾斜杠的有無,這几件事分開配置,一次訪問就连着跳两三次;
- 栏目改版时把 A 指向 B,後来又改成指向 C,但 A 的規則没有同步更新,中間就卡着一层;
- 舊域名整站跳新域名,新域名上又做了一次路径重寫,實际是两跳;
- 路径大小寫不一致,同一地址的大小寫版本各配置了一條跳轉;
- 短鏈、投放連結或歷史文章中引用的地址指向了某個中轉頁。
自查怎么做
- 用命令行逐步跟踪,不要只看最终结果。查看每一跳返回的狀態碼和 Location,確認中間经過了几层。
- 在浏览器開發者工具的 Network 面板勾選保留日誌,刷新一次頁面,观察這一次訪問里出現了几個文档請求。
- 翻服務器訪問日誌,統計 301、302 的占比和跳轉目标,找出反复出現的中間地址。同一個中間地址被大量請求,基本可以判断它上面挂着一堆舊連結。
- 抽样站点地图和主導航里的地址,重点看老栏目、老专题、曾经改過路径的頁面。
自查不必全站铺開,先挑改動過的部分和老頁面,通常問题就集中在那里。
處理原則
- 一步到位。让老地址直接指向最终地址,不要在中間留一层過渡頁,中間层越少越不容易出問题。
- 合並規范跳轉。http 到 https、非 www 到 www 這類固定規則,尽量在一次跳轉内完成,而不是先跳协议再跳域名。
- 检查是否存在循环。A 跳 B、B 又跳回 A 這種,浏览器和抓取最终都會放弃,日誌里往往表現為同一地址反复出現。
- 跳轉目标別一律丢到首頁。尽量指向内容最接近的頁面,用戶和抓取都能少走冤枉路。
- 该 404 就 404。目标内容确實不存在时,返回 404 比長期指向一個临时頁更清楚,也让狀態含义保持一致。
- 区分 301 與 302。永久和临时含义不同,用错會让後續判断變得混乱。
容易忽略的两点
- 站内連結直接寫最终地址,不要寫會触發跳轉的舊地址,否則每点一次就多一跳。
- 检查跳轉鏈经過的頁面有没有被 robots 規則或 noindex 拦住,避免鏈路在中途被掐断。
日常维護习惯
把跳轉規則当成配置一样记錄下来,标明生效時間、来源地址和目标地址。做過多次迁移的老站点,建议每隔一段時間抽查一次。已经不再被任何連結引用的舊規則可以清理掉,規則越积越多时,後面的規則容易覆盖前面的,排查起来也更費劲。
跳轉本身不是問题,多個跳轉叠在一起才是。把鏈路尽量压到一跳,既省下抓取請求,也让訪客少等一會儿。