改版、換域名或者調整一批 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 設定同时大改,出了問题很难判断是哪一环造成的。
跳轉解决的是用戶能到新地址,收錄解决的是搜尋引擎認可新地址是正式版本。這两件事相關,但不是同一件事。