站点改版、切 CDN、換域名之後,URL 往往要经過好几跳才落到最终頁面。單次跳轉是正常做法,但几层叠在一起,蜘蛛從發現一個地址到真正讀到内容,中間要绕的弯就變多了。
單次跳轉没問题,叠加起来才麻烦
301、302 都是标准做法,用来處理域名變更、路径調整再正常不過。問题出在鏈條上:一個入口 URL 先跳到 A,A 再跳到 B,B 又跳到 C,最後才到落地頁。對用戶来说可能只是多等几百毫秒,對抓取来说,每一跳都是一次獨立的請求,以及一次 DNS、TLS、等待响應的完整循环。
常见的鏈條是這样長出来的
- HTTP 到 HTTPS 没有一次到位:先跳到 https 的舊域名,再跳到 https 的新域名。
- www 與非 www 来回跳:主域和带 www 的版本都能訪問,各自又指向對方。
- 尾斜杠补跳:目錄地址先补斜杠,再跳到带參數的最终地址。
- 目錄迁移留下的舊連結:老目錄跳到新目錄,新目錄内部又跳一次。
- CDN 與负载层的規則:邊缘节点先做一次跳轉,源站再补一次。
- 营销短鏈和跳轉頁:站外連結指向中轉頁,中轉頁再跳向内容頁。
鏈條變長,蜘蛛那邊會發生什么
- 抓取预算被摊薄:本来一次請求能拿到的内容,現在要花两三次,同样的配額能覆盖的 URL 變少。
- URL 發現路径被拉長:每一跳都产生一個新的地址需要被记錄和處理,队列里的條目随之增加。
- 信号传递不清晰:鏈條中間的地址可能被当作獨立 URL 參與後續判断,需要靠 canonical 或 Sitemap 去對帳。
- 失敗概率上升:鏈條上任何一环超时、返回 5xx 或连接被重置,整條路径就断在那里。
要說明的是,這些影响是渐進的,不會因為多了一跳就让頁面從索引里消失,但鏈條越長,能平稳走完的概率越低。
怎么數清一條 URL 有多少跳
- 拿站点主要的入口 URL,比如首頁、栏目頁、Sitemap 里的地址,用命令行工具或浏览器的網絡面板看完整的跳轉序列。
- 记錄每一跳的狀態碼、目标地址和耗时,重点關注 302 和临时跳轉,它們比 301 更容易被長期保留下来。
- 對照服務器訪問日誌,看蜘蛛請求這些地址时是否也在跟着跳,有没有在中間某一跳就停下。
- 把 http、https、www、非 www、带斜杠、不带斜杠几個版本分別试一遍,检查是否存在互相指向的循环。
缩短鏈條的几個做法
- 把多級跳轉合並成一次,直接指向最终地址,不在中間保留過渡頁。
- 确定唯一的規范域名和协议,其余版本一律 301 到它,不要再做二次轉發。
- 站内連結、Sitemap、canonical 里直接寫最终地址,减少蜘蛛被带着跳的机會。
- CDN 层的跳轉規則和源站規則對一遍,避免两邊各做一次。
- 改版期間用的临时跳轉,在切換完成後尽早換成永久跳轉,或者直接把連結改掉。
缩短鏈條是為了让抓取路径更干净,不是為了把所有跳轉都去掉。必要的域名统一和路径調整,该跳還是要跳,關键是別在中間留下多余的驿站。
跳轉本身不是問题,堆积才是。把站点的主鏈條梳理到一跳之内,剩下的交给内容结构和内鏈去组织,抓取路径會顺畅很多。