搜索抓取

PC 站与 m 站并行时,蜘蛛会沿着哪套 URL 抓取

当站点同时有 PC 与移动端两套 URL 时,蜘蛛通常会先以移动 UA 进入,可能先在 m 站落脚。本文梳理跳转、canonical、互链与 Sitemap 摆放对抓取路径的影响,以及容易遇到的循环与分叉问题,帮助你把两套 URL 的关系表达清楚。

搜索抓取

PC 站与 m 站并行时,蜘蛛会沿着哪套 URL 抓取

很多站点在响应式改版之外,仍保留着一套独立的移动端 URL,比如 m.example.com 或另一个短域名。对用户来说,这是历史遗留或业务需要;对搜索蜘蛛来说,这等于同站点存在两套入口。蜘蛛并不会自动理解哪套是“主站”,它主要看你给出的信号和实际跳转。

蜘蛛先用移动 UA 敲门

现在多数搜索引擎以移动端爬虫为主。它请求一个 URL 时,会带上移动设备的 User-Agent。如果你的服务器在入口处做判断,看到移动 UA 就直接 302 到 m 站,那么蜘蛛拿到的第一份响应通常不是页面内容,而是一次跳转。跳转本身不是问题,但每多一次跨主机跳转,URL 发现和内容确认都会多一步。

更麻烦的是,有些站点只在根路径做 UA 判断,内页却不做。蜘蛛从 m 站首页走到内页时,可能又被带回 PC 站,形成来回切换。

跳转、canonical 与 alternate 的分工

canonical 是告诉蜘蛛哪套 URL 是主版本;alternate 则说明存在另一个设备版本。两者要成对出现:PC 页指向 m 页,m 页也要回指 PC 页,同时 m 页的 canonical 指向 PC 页。只写单向,蜘蛛容易在两套 URL 之间反复确认,抓取路径就变得不稳定。

如果两套内容其实完全一样,只是模板不同,更简单的做法是让 m 站直接输出与 PC 站一致的主内容,并在 m 页把 canonical 指向 PC URL。这样蜘蛛在 m 站落脚后,很快就能确认主版本,不必把两套 URL 都当成独立页面来抓。

互链方式决定蜘蛛怎么走

  • 双向可点链接:PC 页里的“移动版”链接和 m 页里的“电脑版”链接都是普通的 a 标签,蜘蛛可以双向走通,路径清楚。
  • JS 跳转:只在页面加载后用脚本跳转,蜘蛛拿到的初始 HTML 里可能没有目标链接,容易停在原地。
  • 只做入口跳转:首页跳一次,内页靠用户点,蜘蛛在内页看不到 m 站的入口,可能长期只抓 PC 站。
  • 两套站各自内链:m 站和 PC 站都有一套完整内链,但彼此不连通,蜘蛛要在两个主机之间切换,抓取节奏容易被打断。

几个容易踩的抓取陷阱

第一是循环跳转。服务器根据 UA 判断,PC 跳 m,m 又因为某些规则跳回 PC,蜘蛛在两者之间转圈,最终可能放弃。第二是 canonical 指向不一致:列表页 canonical 到 PC,详情页却 canonical 到 m,蜘蛛对主版本的理解会分裂。第三是内容不同步:PC 站更新了,m 站没更新,或者反过来,蜘蛛每次抓到的内容都不一样,就不容易判断哪个是最终版本。

如果两套 URL 的内容、内链和更新时间长期不一致,抓取路径就会变成两条互不交叉的线,而不是一条清晰的主线。

让路径变得好走

  1. 尽量统一到一套 URL。响应式设计或动态服务同一套 URL,通常比维护两套更省事。
  2. 如果必须保留两套,确保主版本 URL 稳定,所有次要版本都用 canonical 指向它。
  3. 移动端和 PC 端的互链都使用普通 a 标签,避免只靠脚本跳转。
  4. Sitemap 里优先提交主版本 URL,两套都提交时,确保与 canonical 保持一致。
  5. 两套站的内容更新与内链结构尽量同步,至少不要让其中一套长期空白。

最后,回到蜘蛛的视角:它没有“移动优先”或“PC 优先”的偏好,只有你给出的信号。跳转、canonical、互链和 Sitemap 说的是同一件事,蜘蛛才会沿着一条清晰的路径走。若几处信号互相矛盾,它就只能在两套 URL 之间试探,抓取效率自然会下降。