如果你只從浏览器角度看,重定向就是地址栏一闪,頁面到了。但從搜尋蜘蛛的视角看,每一次重定向都是一次新的 URL 發現:它先請求 A,拿到 301 或 302,再請求 B,如果 B 又跳 C,它還得繼續走。原本一次抓取能完成的事,被拆成了多次。
重定向不是错誤,但它會改變抓取路径
合理使用重定向是正常的:HTTP 跳 HTTPS、www 跳非 www、舊商品頁跳新商品頁,都需要它。問题在于,蜘蛛的抓取预算和连接资源有限,每多一跳,就多一次 DNS 解析、连接建立和响應等待。路径越長,蜘蛛在同一個目标頁上投入的有效抓取就越少。
更隐蔽的是,重定向會让蜘蛛把多個 URL 都当作“被發現過”的地址。如果這些地址長期返回跳轉,它們可能持續占用抓取机會,却不产生可索引的内容。
301 與 302:永久和临时,對路径的影响不同
301 表示永久迁移,蜘蛛通常會把原 URL 的權重和抓取需求逐步轉移到新 URL,後續更倾向于直接訪問目标地址。302、307 表示临时跳轉,蜘蛛會保留原 URL,並可能反复回来確認。若把 302 当 301 長期使用,容易让蜘蛛在舊地址上反复试探,抓取路径迟迟不能收敛。
建议:站点结构變化、域名迁移、URL 規則調整,用 301;活動頁、短期限时跳轉,用 302。不要让临时跳轉變成永久狀態。
鏈式重定向與循环重定向:抓取路径上的连續弯道
鏈式重定向指 A→B→C→D 這種多級跳轉。每增加一級,蜘蛛就要多一次請求。如果鏈中出現超时、5xx 或 robots.txt 拦截,後面的目标頁可能永遠走不到。循环重定向更糟:A→B→A,蜘蛛會在原地打轉,最终放弃,並把這條路径标记為不稳定。
常见的鏈式来源包括:舊域名跳新域名,新域名又跳带 www 版本,带 www 版本再跳 HTTPS;或者 CDN、负载均衡、應用层各配置了一次跳轉。每层都觉得自己只做了一次,蜘蛛却收到了一串。
把重定向鏈收短:几個可落地的检查点
- 直接跳终点:舊 URL 尽量一步跳到最终可訪問的規范 URL,不要中間再经過临时地址。
- 统一規范化規則:协议、主机名、末尾斜杠、大小寫只保留一種形式,避免蜘蛛在變体之間来回跳。
- 检查内鏈和 Sitemap:内鏈和 Sitemap 里尽量寫最终地址,不要寫會跳轉的舊地址。否則蜘蛛每次都要多走一步。
- 關注服務器稳定性:重定向過程中的 5xx、超时和限流,會让蜘蛛降低對整條路径的信任,回訪更保守。
- 用日誌驗證:看蜘蛛訪問日誌里哪些 URL 频繁出現 301/302,顺着日誌把鏈路画出来,比只看配置文件更接近真實抓取路径。
重定向與 URL 發現的關系
蜘蛛發現 URL 的入口很多:内鏈、Sitemap、外鏈、歷史记錄、API 返回等。重定向會把這些入口指向的地址再“翻译”一次。如果翻译层數太多,URL 發現效率就會下降。對站点运营来说,目标不是消灭所有重定向,而是让每一條重定向都有明确终点,並且终点是稳定、可抓取、可索引的頁面。
把重定向当成抓取路径的一部分来管理:能一步到位,就不要让蜘蛛绕路。
最後,定期抽查主要入口頁和栏目頁的跳轉情况,尤其是改版、換域名、調整 CDN 之後。蜘蛛不會抱怨绕路,它只會把時間花在別處。