搜尋抓取

移動端與桌面端 URL 的抓取归並:两套地址如何收敛成一條记錄

移動端和桌面端如果各自有一套 URL,同一份内容就容易在抓取日誌里留下两條记錄。本文按响應式、獨立 m 站两種形態,梳理 robots、Sitemap、canonical 與重定向的核對顺序,並给出用两種 UA 對照日誌的方法,帮助把多终端地址收敛到主版本。

搜尋抓取

移動端與桌面端 URL 的抓取归並:两套地址如何收敛成一條记錄

同一個頁面在移動端和桌面端往往對應不同的地址:响應式站点用同一套 URL,獨立 m 站會多出 m.example.com 或 /m/ 前缀,早期站点還留着 wap 子域和带參數的跳轉地址。對搜尋蜘蛛来说,這些都是可發現的入口。如果缺乏统一约定,同一份内容會被拆成两三條抓取记錄,發現速度被稀释,日誌也變得难以阅讀。

先確認站点属于哪種形態

响應式,一套 URL

HTML 里用媒体查询适配屏幕,蜘蛛抓一次就够。這種情况不需要額外提交移動地址,重点只在于確認代碼没有被 UA 判断逻辑切成两套模板,導致移動 UA 拿到残缺頁面。

獨立移動域名或子目錄

两套地址並存,必须明确哪一套是主版本,另一套如何指向主版本。常见做法是移動版保留可訪問,但通過 canonical 和 Sitemap 把主版本固定下来;也有站点直接让移動版 301 到响應式頁面,這属于迁移,需要單獨评估。

核對清單

  • robots.txt:两套地址都要能被抓取。一邊允许、一邊把移動版 Disallow,會让移動抓取拿不到内容,反而更容易触發替換判断。
  • Sitemap:只提交主版本 URL,並確認列表里的地址在两種 UA 下都返回 200,不要出現桌面版正常、移動版 404 的情况。
  • canonical:移動版指向主版本,主版本指向自己,指向關系要一致且唯一。两邊互相指等于告诉引擎這是两個頁面。
  • 重定向:如果移動版是跳轉頁,確認跳轉是 301 或 302,落点可抓,不要依赖 JS 跳轉或 meta refresh 作為唯一手段。
  • Vary 头:依據 UA 返回不同 HTML 的站点,應正确設定 Vary: User-Agent,避免缓存把移動版頁面回给桌面蜘蛛。

用日誌做一次對照

把移動蜘蛛和桌面蜘蛛的 UA 分開統計,按 URL 分组後检查几件事:

  1. 主版本 URL 是否被两種 UA 都抓過,還是只有一種在持續訪問;
  2. 移動版 URL 是否只被抓取一两次就再没出現,那通常意味着已被归並;
  3. 跳轉鏈是否超過一层,中間地址有没有被反复抓取;
  4. 移動版返回的狀態碼分布是否正常,有没有成片的 3xx 或软 404。
判断标准很简單:一份内容,理想狀態下只保留一條稳定的抓取记錄,其余入口只是通往它的路径。

常见坑

  • 移動版 canonical 指向自己,桌面版也指向自己,等于把一份内容拆成两份声明。
  • Sitemap 同时提交移動版和桌面版,两邊的 lastmod 還不一致,更新時間對不上。
  • 用 UA 判断跳轉,蜘蛛 UA 收到的是空頁或直接跳回首頁。
  • 移動版正文被裁剪,能抓取但内容不完整,發現阶段没問题,後續评估却吃亏。
  • 參數式移動地址(?mobile=1)被内鏈反复传递,形成額外的抓取消耗。

小结

多终端本身不是問题,缺少约定才是。先确定主版本,再從 robots、Sitemap、canonical、重定向這四件事上统一口径,最後用两種 UA 的日誌核對抓取记錄是否收敛到同一條 URL。做完這一轮,URL 發現的數量會下降,但每條记錄的有效性會明顯提高。