網站收錄

301 做了,收錄没跟過来:從跳轉鏈排查起

舊 URL 配了 301、浏览器也能正常跳到新頁面,但搜尋结果里依然是舊地址,新地址迟迟不進索引。問题往往不在跳轉本身,而在跳轉鏈長度、301 與 302 的混用、目标頁自身的可收錄條件,以及 sitemap 和内鏈是否同步。本文按排查顺序拆開這几环。

網站收錄

301 做了,收錄没跟過来:從跳轉鏈排查起

改版、換域名或者調整一批 URL 结构之後,最常见的反馈是:跳轉已经配好,浏览器訪問舊地址也能到新頁面,但搜尋结果里還是舊 URL,新地址迟迟不出現。這種情况通常不是跳轉没生效,而是鏈路上有一环没走通。

先看跳轉是不是一步到位

理想狀態是舊 URL 直接 301 到最终目标 URL,中間不再经過第二個地址。但實际环境里鏈式跳轉很常见:http 跳到 https、带 www 跳到不带 www、少一個尾斜杠再跳一次、CDN 层又加一跳。對用戶来说结果一样,對抓取来说却是一串连續的跳轉。

  • 每多一跳,蜘蛛都要重新發起請求,响應慢的站点上容易中途放弃;
  • 鏈路上只要有一环返回的是 302、meta refresh 或 JS 跳轉,替代關系就可能不被確認;
  • 鏈路太長时,即使最终頁面被抓到,舊 URL 與新 URL 的對應關系也更容易被處理得含糊。

排查方式很直接:用命令行工具或在线檢測看完整跳轉鏈,把真正落地的那個 URL 当作目标,其余中間地址尽量合並掉。

301 和 302 別混用

301 表示永久替代,302、307 表示临时。對临时跳轉,常见處理方式是保留原 URL,抓取时繼續訪問舊地址。如果因為調整把舊 URL 長期 302 到新地址,索引里長期保留舊 URL 就不奇怪了。

另一種情况是鏈路上類型混用:第一跳 301,第二跳 302。這種组合下,替代關系可能只被認到中間那一环,最终目标頁反而没有被当作正式版本。

目标頁自己是否具备被收錄的條件

跳轉只是把蜘蛛送過去,能不能進索引還要看目标頁本身。常见的坑有:

  • 目标頁带着 noindex,或被 robots.txt 屏蔽;
  • 目标頁返回 404、500,或者需要登入才能看到内容;
  • 目标頁的 canonical 又指向了第三個 URL,等于把收口位置再挪一次;
  • 目标頁是篩選頁或聚合頁,内容單薄,本身就不适合進索引。

這些問题在跳轉配置里看不出来,需要單獨打開目标頁的 HTML 確認 meta robots 和 canonical。鏈路排查和目标頁排查是两件事,不能只做一件。

站点地图和内鏈也要跟着改

跳轉配好之後,如果 sitemap 里列的還是舊 URL、站内連結還指向舊地址,蜘蛛每次抓取都先走一遍跳轉。舊 URL 持續获得抓取和内鏈信号,新 URL 反而没有直接入口,收錄推進自然慢。

比較稳妥的做法是同步三件事:sitemap 換成新 URL;導航、面包屑、正文内鏈指向新 URL;舊 URL 只保留跳轉,不再出現在任何列表里。

怎么观察有没有跟過来

可以看服務器日誌里目标 URL 的抓取记錄:如果它開始被直接訪問,而不是经過跳轉進来,說明替代關系大致被接受了。舊 URL 從索引里消失通常滞後于抓取,需要一段時間,不必每天盯着看。

推進时尽量一次只改一類變量。跳轉鏈、sitemap、内鏈、目标頁 robots 設定同时大改,出了問题很难判断是哪一环造成的。

跳轉解决的是用戶能到新地址,收錄解决的是搜尋引擎認可新地址是正式版本。這两件事相關,但不是同一件事。