搜尋抓取

站点改版換了 URL 结构:怎么把蜘蛛的抓取路径迁到新结构

站点改版更換 URL 结构後,蜘蛛仍會按舊路径抓取。本文梳理迁移时要處理的三條线索——301 跳轉、站内内鏈和 Sitemap,给出動作顺序建议,並說明如何用服務器日誌判断蜘蛛是否已经切到新地址,以及几個常见的配置疏漏。

搜尋抓取

站点改版換了 URL 结构:怎么把蜘蛛的抓取路径迁到新结构

站点改版最容易被忽略的部分不是頁面设計,而是搜尋蜘蛛手里那張老地图。舊 URL 一旦被删掉、新的地址又没有出現在任何它熟悉的位置,蜘蛛會繼續按惯例請求舊路径,拿到 404 之後逐步减少對整站的訪問。迁移要做的事情其實很简單:把新地址明确地告诉它,並让站内的鏈路先一步指向新地址。

先分清是「路径變了」還是「内容搬了」

两種情况處理方式不同。第一種是内容没動,只是 URL 结构變了,比如從 /p/123 改成 /guide/xxx,這類頁面最适合用 301 直接對應到新地址。第二種是内容也重新组织了,一篇文章被拆成几篇,或者几篇合並成一篇,這时候不存在天然的一對一關系,需要人工指定一個最合适的目标頁面,其余的舊地址统一指向它,而不是让它們各自 404。

如果分不清這两類,迁移動作就會做得很乱:该做映射的地方做了整站跳轉,该人工判断的地方交给規則自動處理。

迁移依赖的三條线索

301:尽量一對一,不要串成鏈

蜘蛛遇到 301 會跟過去,但连續跳两次、三次之後,抓取成本就上去了,而且中間任何一环配置错誤,整條鏈就断在中間。能直接指向最终地址的,就不要先跳到中間頁。舊頁面的 301 目标必须是返回 200 的真實頁面,不能指向另一個 301,也不要指向首頁了事——把所有舊地址都堆到首頁,等于告诉蜘蛛這些内容都不存在了。

内鏈:蜘蛛走的主路

内鏈是蜘蛛發現新地址最自然的方式。改版时,導航、面包屑、栏目列表、相關推荐這些位置要一起改,不能只改正文里的連結。列表頁尤其容易被漏掉,它往往由模板生成,如果模板没更新,蜘蛛顺着列表翻十頁,看到的仍然是舊地址。

新頁面的入口尽量從已有頁面的正常位置鏈出去,避免大量新連結集中堆在一個孤立的落地頁上。

Sitemap:新舊並行一段時間

Sitemap 是补充线索,不是主路。改版後可以先保留舊 Sitemap 一段時間,但里面列出的應当是返回 301 的地址,而不是已经 404 的地址;新的 Sitemap 則只放返回 200 的新地址。两邊都寫上、又互相矛盾,蜘蛛只會更犹豫。

動作顺序建议

  1. 先在服務器或 CDN 层面配置好 301 規則,確認舊地址拿到的是 301,而不是 404 或 200 空白頁。
  2. 再改站内模板:導航、面包屑、列表頁、分頁連結全部換成新地址。
  3. 更新 Sitemap,並確認其中的每個 URL 都能正常返回 200。
  4. 最後观察日誌,看蜘蛛是否已经把請求重心挪到新地址上。

把顺序反過来容易出問题:Sitemap 先更新、内鏈還是舊的,蜘蛛抓到的頁面里全是舊連結,反而會被带回舊路径。

用日誌確認迁移真的發生了

重点看两個趋势:舊地址的請求量是否在下降,且返回碼從 200 變成了 301;新地址的請求量是否在上升,且返回碼是 200。如果舊地址還在被大量請求、並且返回 404,說明 301 規則没覆盖到這些路径,可能是大小寫、结尾斜杠或者參數形式不一致導致的。

也可以顺便看一下新頁面的首次被抓時間分布:如果蜘蛛集中抓了一批新地址,随後几天没有再回来,往往是新頁面的内鏈入口太少,或者列表頁還没更新。

几個常见的坑

  • 舊地址直接删掉,没有做任何指向,蜘蛛只能拿到 404。
  • 301 指向的頁面本身又返回 301,形成鏈條。
  • 只改了正文内鏈,導航和列表模板没動。
  • 把带參數的舊地址全部重定向到首頁,浪費了原有的連結關系传递。
  • Sitemap 里同时出現新舊地址,且部分已经失效。
改版迁移不是一次性提交任務,而是一段時間内的收敛過程。给蜘蛛留出重新学习的窗口,比急着清理舊地址更稳妥。

最後一点:迁移期間服務器要保持稳定,响應時間抖動或者間歇性 5xx,會让蜘蛛降低抓取节奏,迁移進度自然被拖慢。等日誌里新地址的抓取趋于平稳,再逐步清理舊的 Sitemap 和残留的跳轉規則,整個迁移才算收尾。