重定向不是入口,而是過渡
站点改版、域名切換、目錄調整时,重定向常被用来把舊地址指向新地址。對搜尋蜘蛛来说,重定向本身可以被跟随,但它更像是一段临时通道,而不是一個稳定入口。每次跳轉都會产生一次 HTTP 請求,消耗抓取配額,也會拉長 URL 從發現到落地的時間。
如果站内鏈、Sitemap 或外部連結長期指向一個會跳轉的地址,蜘蛛每次訪問都要先走一遍跳轉,才能到達最终頁面。短期可以接受,長期来看並不划算。
301 與 302 在 URL 發現中的差別
301 表示永久移動,搜尋蜘蛛通常會把最终地址当作目标,並在後續抓取中逐步替換。302、307 表示临时跳轉,蜘蛛會跟随,但對最终地址的確認更谨慎,舊地址可能繼續被保留在發現队列里。
- 301:适合已经确定的地址迁移,能帮助 URL 發現收敛到新地址。
- 302 / 307:适合短期活動頁或临时维護,不建议作為長期入口。
- Meta refresh 與 JS 跳轉:可被识別,但處理優先級和稳定性通常不如服務器端 301。
把重定向当作過渡手段,而不是長期連結方案;能直接给出最终 URL 的地方,就不要多绕一跳。
跳轉层級多長算長
理想情况下,從入口到最终頁面只经過一次跳轉。两到三次跳轉已经需要留意,超過三次則容易带来几個問题:
- 每次跳轉都占用一次請求,抓取预算被中間地址分走。
- 如果中間某一跳返回 5xx、404 或跳到登入頁,URL 發現會在這里中断。
- 循环重定向會让蜘蛛反复請求,最终放弃该路径。
- 跳轉鏈上的參數、會话 ID 可能让最终 URL 形態不稳定,造成重复發現。
检查时可以用命令行工具查看响應头中的 Location 字段,也可以在浏览器開發者工具的網絡面板里观察完整跳轉鏈。重点看是否存在 A→B→C→A 的循环,以及是否有跳轉指向 404 或無關頁面。
哪些地方最容易积累重定向鏈
- 舊版栏目頁:栏目改名後,舊地址跳到新地址,但新地址又被再次調整,形成多級跳轉。
- 带 www 與不带 www:协议、域名、路径三者不统一时,可能连續跳轉两次。
- 末尾斜杠與預設頁:/page 與 /page/、/index.html 之間的跳轉若未收敛,會反复出現。
- HTTP 到 HTTPS:如果同时叠加域名跳轉,容易變成两跳以上。
- 短連結與活動連結:短期使用後未清理,長期留在内鏈或分享内容里。
把入口直接指向最终地址
减少重定向鏈最直接的办法,是让内鏈、Sitemap、面包屑和導航都使用最终 URL。已经确定迁移的地址,用 301 一次性指向终点,而不是先跳到中間頁再跳一次。對于批量舊 URL,可以在服務器配置里做規則合並,避免規則叠加产生连鎖跳轉。
另外,重定向目标頁最好與 canonical 保持一致。如果重定向到 A,而 A 的 canonical 又指向 B,蜘蛛還需要額外判断,URL 發現過程會變得更绕。
日常检查清單
- 抽查站内主要入口,確認是否直接返回 200。
- 對已知舊地址做批量請求,记錄跳轉次數與最终狀態碼。
- 清理循环重定向、跳轉到 404 的規則。
- 把長期使用的 302 改為 301,或直接替換為最终連結。
- 在 Sitemap 中只放最终可訪問地址,不放會跳轉的中間地址。
重定向鏈不會直接决定頁面是否被收錄,但它會影响抓取路径是否顺畅、配額是否被浪費。把跳轉层級压到最低,URL 發現和後續抓取都會更稳定。