搜索抓取

移动端与桌面端 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 发现的数量会下降,但每条记录的有效性会明显提高。