重定向在站点运营里几乎是家常便饭:換域名、上 HTTPS、统一 www、修正 URL 大小寫、合並重复頁面,都會用到 301 或 302。但很多人只關心“跳轉能不能生效”,忽略了它對搜尋蜘蛛的影响。蜘蛛每遇到一次跳轉,就要額外發一次請求、多等一轮响應,抓取路径被拉長,URL 發現和抓取的效率也随之變化。
一次跳轉,蜘蛛多做了什么
当蜘蛛請求 A 地址,服務器返回 301 並给出 B 地址,蜘蛛需要重新發起請求才能获取 B 的内容。對用戶来说頁面只是“換了個地址”,對蜘蛛来说這是两次獨立的抓取動作:A 的响應头要解析,B 的正文要下载解析,中間還可能有 DNS 查询和连接建立的時間開销。單次跳轉成本不大,但如果站内成千上萬個 URL 都要经過一跳才到最终頁,累积起来就是可观的抓取资源占用。
鏈式跳轉為什么更值得警惕
比如 http 跳 https,再跳 www,再跳尾斜杠修正,一個 URL 要走三跳才落地。這種情况下會出現几個問题:
- 每一跳都占用一次抓取机會,而蜘蛛的並發和配額有限,鏈越長,單位時間能覆盖的 URL 越少。
- 任何一跳異常(超时、5xx、配置遗漏),後面全部中断,頁面就變成抓不到的狀態。
- 蜘蛛记錄的 URL 數量被放大,日誌里出現大量中間地址,排查真實抓取情况时噪音變多。
- 如果外鏈、Sitemap、内鏈指向的是中間地址,蜘蛛就得反复走這條鏈,速度更慢。
几種常见的重定向来源
- 协议與主机名统一:http→https、裸域→www,通常各占一跳,能合並成一跳就合並成一跳。
- 尾斜杠與大小寫:/page 與 /page/、/Page 與 /page,如果不做统一,容易同时被訪問,靠跳轉兜底时也要留意鏈長。
- 改版與栏目迁移:舊路径 301 到新路径,如果新路径又指向別處,就形成了鏈。
- meta refresh 與 JS 跳轉:這類跳轉寫在 HTML 或脚本里,蜘蛛需要先渲染或解析才會跟進,比服務端 301 慢一步,也更容易被忽略。
跳轉類型怎么選
永久性迁移用 301 或 308,临时性調整用 302 或 307。類型選错,一方面會让蜘蛛對最终地址的判断产生偏差,另一方面也不利于 URL 归一。需要注意的是,無论哪種跳轉,都尽量让目标地址是最终可訪問地址,而不是另一個還會繼續跳轉的中轉地址。
把鏈缩短的几件小事
- Sitemap 里只寫最终地址,不要寫會跳轉的舊地址。
- 站内連結直接指向最终地址,別让蜘蛛在站内绕一圈才到目标頁。
- 服務器层做统一規則时,尽量一次性把协议、主机名、尾斜杠合並處理,避免多跳。
- 跳轉頁本身不要承载内容,保持轻量,减少每次跳轉的解析负担。
- 定期用抓取日誌检查是否還有鏈式跳轉,改版之後尤其要复查。
服務器稳定性也在鏈上被放大
鏈式跳轉把一次訪問拆成了多次請求,每一环都依赖服務器响應。如果服務器本身不稳定,鏈越長,中途失敗的概率越高。這时候即使目标頁狀態良好,蜘蛛也可能因為中間某一跳超时而放弃,或者延後再来。反過来,服務器稳定、响應時間短,跳轉带来的額外成本也能控制住。
重定向本身不是問题,問题在于鏈太長、跳得太多、目标不明确。把它控制在“一跳到位”,對蜘蛛和用戶都是更省事的做法。
最後可以用一句话自查:如果一個 URL 需要超過一跳才能到達最终頁面,就值得回头看看,是配置問题,還是連結入口寫错了。把這些中間环节理顺,蜘蛛的抓取路径會更直接,URL 發現和覆盖也更容易保持稳定。