移動端适配是站点运营里很容易被忽略的一個抓取變量。為了让手机用戶打開更快,不少站点會單獨搭一套移動域名(例如 m.example.com),或者單獨划一套移動路径(例如 /m/),桌面端和移動端各维護一套連結体系。對訪問者来说這可能没有差別,但對搜尋蜘蛛来说,URL 發現入口被拆成了两條线:来自桌面端的爬取顺着桌面站的内鏈走,来自移動端的爬取顺着移動站的内鏈走,两邊能采到的 URL 集合往往並不重合。
URL 分流通常是怎么形成的
分流很少是一次性设計出来的,多數是歷史迭代留下的:
- 獨立移動域名:早期用 m. 或 wap. 子域做移動站,模板與桌面站分開维護,連結结构也各自演化。
- 路径型移動站:把移動頁面放在 /m/、/mobile/ 目錄下,頁面内容與桌面版高度相似,但 URL 不同。
- 動態自适應跳轉:同一個 URL 根據 UA 或屏幕宽度返回不同版本的 HTML,連結集合也随之變化。
- 客戶端渲染差异:桌面端走服務端渲染,移動端走前端路由,連結只在其中一端的 HTML 里出現。
分流给抓取带来的實际問题
抓取预算被摊薄到两套 URL 上
同一篇内容存在两個可訪問 URL,蜘蛛需要在两份頁面、两套内鏈上分別花費抓取請求。站点規模越大,重复消耗越明顯,真正需要更新的新頁面反而排在後面。
内鏈断层,新内容只被一邊發現
如果移動站的内鏈只指向移動站,桌面站的内鏈只指向桌面站,那么入口越少的頁面,越可能只被其中一侧發現。另一侧要么靠 Sitemap 补充,要么長期處于孤立狀態。
信号分散
外鏈、内鏈、用戶訪問資料分別落到不同 URL 上,等于把同一份内容的信号拆成两半。這通常不是惩罚,而是分散,结果就是两邊都不够明确。
把入口收敛起来的几種做法
做法没有绝對優劣,關键是選定一種並保持長期一致:
- 迁移到响應式:桌面與移動共用一套 URL,用 CSS 與视口适配。分流問题從根上消失,代價是前端改造量與移動端性能需要重新調。
- 保留移動站但统一内鏈图:移動頁面内鏈指向規范版本,或在移動頁上放置指向桌面版的等價連結,让两套 URL 的發現路径互相接得上。
- 明确規范版本:移動頁通過 canonical 指向桌面版(或反向),配合 alternate 标注移動版,避免两邊都被当成互不相關的内容處理。
- 動態服務保持連結一致:如果确實要按 UA 返回不同 HTML,至少让两種版本輸出同一套可抓取的 a 标簽連結,否則蜘蛛看到的是两份不同的站点地图。
Sitemap 與标注的协同
Sitemap 是分流场景下最重要的补位工具。建议只提交規范 URL,並保持 lastmod 與實际内容更新時間一致;如果移動版有獨立 URL 且需要被發現,用 alternate 關系标注清楚,而不是把两套 URL 都当主入口提交。Sitemap 里混杂大量近似 URL,反而會稀释每條记錄的可信度。
服務器稳定性是這一切的前提
分流场景下,同一份内容要响應更多次請求,服務器压力随之上升。如果移動站响應時間明顯長于桌面站,或者跳轉鏈路里出現 302 连环、超时、连接重置,抓取节奏就會被打断,蜘蛛更倾向于减少訪問频次。先保證两侧响應速度接近、狀態碼干净,再谈入口收敛才有意义。
自查清單
- 桌面版與移動版的 URL 集合差异是否清晰可控,有没有维護成清單?
- 移動頁與桌面頁的 canonical、alternate 是否成對且互相指向?
- Sitemap 中是否存在同一内容的多套 URL?
- 两種版本的 HTML 里,主要導航與列表頁連結是否都能到達?
- 移動站與桌面站的响應時間是否在同一量級?
- 用抓取工具分別以桌面 UA 和移動 UA 抓取,URL 數量差距是否合理?
入口收敛的價值不在某一次抓取,而在于让蜘蛛每次来都沿着同一張地图走。地图越稳定,新 URL 被發現的時間就越可预期。