常见問题

入口頁用 301/302 跳轉到目标 URL:搜尋蜘蛛會跟到第几跳

入口頁用 301 或 302 跳轉时,搜尋蜘蛛是在 HTTP 层跟着 Location 繼續請求,這和頁面里的普通連結不是一回事。本文梳理跳轉鏈長度、跨域跳轉、循环跳轉對 URL 發現的影响,並给出控制跳數、排查落点狀態碼的實操建议。

常见問题

入口頁用 301/302 跳轉到目标 URL:搜尋蜘蛛會跟到第几跳

先区分两種跳轉

很多人在排查 URL 發現問题时,會把两件事混在一起:一種是頁面 HTML 里寫了連結或 meta refresh,另一種是服務器直接返回 301、302、307、308 這類狀態碼。前者需要搜尋蜘蛛先把頁面 HTML 抓下来、解析出連結;後者是請求發出後,服務器在 HTTP 层就把地址換掉了,搜尋蜘蛛還没拿到任何 HTML。

這两條路径對目标 URL 的發現影响不一样。meta refresh 需要頁面被解析,服務器跳轉則主要取决于搜尋蜘蛛愿不愿意繼續跟下一跳。

搜尋蜘蛛遇到 3xx 的基本逻辑

当搜尋蜘蛛請求入口頁,服務器返回 301 或 302,响應头里带着 Location,搜尋蜘蛛通常會把這次跳轉理解為该 URL 的新地址,然後對 Location 指向的 URL 再發起一次請求。這個過程可以重复,但不會無限重复。

  • 301 一般被理解為永久跳轉,搜尋蜘蛛更倾向于把原 URL 的信号归到目标 URL;
  • 302、307 属于临时跳轉,處理上更保守,原 URL 可能仍會被反复抓取;
  • 每一跳都會消耗抓取资源,跳數越多,留给真正内容頁的抓取预算就越少。

多跳跳轉:搜尋蜘蛛會跟到第几跳

搜尋引擎没有公開最多跟几跳的硬性數字,但實践里,短鏈(一到两跳)基本都能跟到终点;跳數一多,比如五跳以上,不同引擎、不同站点的表現會明顯分化:有的繼續跟,有的停在某一跳,有的干脆放弃整條鏈。

更麻烦的是,跳轉鏈中間任何一跳出問题,後面就断了。常见情况包括:

  • 中間某一跳返回 404 或 410,整條鏈断在這里;
  • 中間某一跳返回 5xx,搜尋蜘蛛可能過段時間重试,也可能降低對该路径的抓取频率;
  • 跳轉鏈里混入登入頁、驗證頁、地区選擇頁,最终落点不是你想让搜尋蜘蛛看到的内容;
  • 跳轉鏈形成环,A 跳到 B、B 又跳回 A,搜尋蜘蛛跟几圈後會放弃。

跨域跳轉要單獨看

如果入口頁 302 到另一個域名下的目标 URL,搜尋蜘蛛會跨域跟過去,但這不等于两個域名之間有什么信任传递。跨域跳轉只解决能不能發現這個 URL,不解决這個 URL 會不會被收錄。而且在批量入口頁同时跳向同一個目标域名时,這種模式更容易被当成異常。

跳轉後,浏览器和搜尋蜘蛛看到的不完全一样

用戶訪問时,浏览器會跟着跳,地址栏最终停在目标 URL。搜尋蜘蛛這邊,它记錄的是原 URL 跳轉到目标 URL 這個事實;目标 URL 是否被当成獨立 URL 處理,取决于跳轉類型以及该 URL 自身的返回狀態。

關键点在于:如果目标 URL 自己返回 noindex、被 robots.txt 屏蔽,或者返回 404,那么跳轉只是把它暴露出来,並不會让它進入索引。

用 301/302 做 URL 發現,怎样更稳

  1. 已经确定不再使用的入口 URL,優先用 301;临时活動頁、临时落地頁用 302,別長期用临时跳轉代替永久跳轉。
  2. 把跳轉鏈控制在 1 到 2 跳,不要在中間叠加統計跳轉、地区跳轉、短鏈跳轉。
  3. 不要用跳轉完全代替頁面里的普通連結。如果入口頁本身能正常返回 200 並放連結,就让搜尋蜘蛛按普通連結發現目标 URL,鏈路更清晰。
  4. 跳轉目标必须是可抓取的 200 頁面,且没有被 robots.txt 或 noindex 拦住。
  5. 监控入口頁的狀態碼變化,尤其是批量入口頁共用同一套跳轉規則时,一個配置错誤會影响整批 URL。
跳轉能帮搜尋蜘蛛走到目标 URL,但走得到不等于收得下。發現和收錄是两件事。

排查清單

  • 用 curl 或抓包工具逐跳查看 Location,確認總跳數;
  • 检查最终落点 URL 的狀態碼、robots 規則和 noindex 标记;
  • 對比服務器日誌,看搜尋蜘蛛是停在中間某一跳,還是跟到了终点;
  • 確認是否存在循环跳轉、跨域跳轉比例過高、跳轉目标集中度過高的問题。

如果日誌里顯示搜尋蜘蛛對入口頁的請求很多,但對最终目标 URL 的請求很少,通常先排查三件事:跳轉鏈是不是太長、中間有没有失敗跳轉、目标 URL 本身是否可抓取。把這些排掉,再谈其他優化才有意义。