搜尋抓取

改版換 URL 之後:让蜘蛛把抓取路径迁到新地址

站点改版換掉一批 URL 之後,蜘蛛手里仍然握着舊地址,會按原来的节奏回訪。本文梳理舊 URL 的收尾方式、内鏈與 Sitemap 的切換顺序,以及 canonical、robots、大小寫這些常见残留問题,並列出上线後值得長期观察的日誌指标。

搜尋抓取

改版換 URL 之後:让蜘蛛把抓取路径迁到新地址

先想清楚:蜘蛛手上還握着舊 URL

站点改版換掉一批 URL 之後,蜘蛛不會立刻知道新地址。它手里仍然存着舊的抓取队列,會按原来的节奏回訪舊 URL。這时候站点给出什么回應,决定了它是把抓取轉到新地址,還是把這條路径标记成失效。

舊 URL 的收尾方式

  • 單跳 301 到新 URL:蜘蛛跟随一次就拿到新地址,路径最短,是迁移期最省抓取预算的做法。
  • 鏈式跳轉:舊 URL 跳到中間頁,再跳到新 URL。每一跳都要多消耗一次請求,鏈條越長,中途被放弃的概率越高。
  • 302 或 JS 跳轉:302 只是临时信号,蜘蛛可能反复回訪舊地址確認;JS 跳轉則要先渲染才能拿到新 URL,比服務端跳轉慢一拍。
  • 舊 URL 繼續返回 200:新舊内容同时存在,蜘蛛没有理由放弃舊地址,抓取量會長期分散在两套 URL 上。

如果舊路径下還有大量带參數的地址,建议在服務器层面统一归一到無參數版本,再 301 到新地址,避免迁移期凭空多出一批需要單獨處理的 URL。

内鏈與 Sitemap 的切換顺序

跳轉解决的是“找到新地址”,内鏈解决的是“之後還能持續被發現”。這两件事的切換可以排個先後。

  1. 先改模板层的連結:主導航、面包屑、列表頁卡片、分頁。這些位置出現在大量頁面上,改一次就能覆盖全站入口。
  2. 再改正文内容里的站内連結。這部分量大且分散,可以按栏目分批處理,不必一次性全量替換。
  3. Sitemap 換成新 URL,並去掉舊 URL。新舊混在同一份文件里,會让人难以判断哪套地址才是主版本。
  4. robots.txt 里對 Sitemap 的引用同步更新,同时確認没有對新目錄誤加 Disallow。
迁移期最容易忽略的是 canonical:頁面已经跳到新地址,但 canonical 還寫着舊 URL,等于给蜘蛛两個相反的信号。

三個常见的残留問题

canonical 與跳轉方向不一致

新頁面 canonical 指向舊 URL,舊 URL 又 301 到新頁面,形成閉环。蜘蛛在两套地址之間来回折返,抓取量被白白消耗。

舊目錄整体屏蔽

有人為了“清理舊站”,直接在 robots.txt 里 Disallow 掉整個舊目錄。這样蜘蛛無法讀取跳轉規則,新 URL 也就失去了從舊路径迁移過来的机會。屏蔽應该留给确實不希望被抓的路径。

大小寫與结尾斜杠

改版後 URL 命名規則變化,容易出現 /Page 和 /page、带斜杠和不带斜杠並存的情况。同一内容對應多個地址,抓取和權重都會被摊薄。改版时最好一次性定好規則,並在服務端做归一處理。

上线之後看什么

迁移效果要看一段時間,不是上线当天就能判断。可以在日誌里观察几件事:

  • 舊 URL 的狀態碼分布,301 的比例是否接近全部,是否還残留 200 或 404;
  • 新 URL 的首次抓取時間與數量,是否随着時間逐步上升;
  • 站内連結中被抓取的新地址占比,用来判断内鏈替換是否生效;
  • 整体抓取频次有没有明顯下滑,如果下滑,检查是不是跳轉鏈或服務器响應拖慢了节奏。

如果站点体量大,可以按频道分批迁移,每批間隔一两周,確認這一批的抓取已经轉向新地址,再推下一批。這样即便某一批出了問题,也不會牵连全站。

改版迁移本质上是一次抓取路径的重新铺设:舊路径要干净地指向新路径,新路径要能從導航和内容里被反复發現。把這两点做好,剩下的就是给蜘蛛一点時間。