搜索抓取

移动优先索引下,蜘蛛抓到的到底是哪个版本的页面

移动优先索引下,蜘蛛主要以移动 UA 抓取页面,但不少站点的移动版和桌面版在正文、内链、canonical 上并不一致。本文梳理响应式、动态服务、独立移动站三种做法的抓取差异,并给出一份用移动 UA 自查 HTML、缓存与日志的核对清单。

搜索抓取

移动优先索引下,蜘蛛抓到的到底是哪个版本的页面

站点改移动端的时候,多数人只关心用户看到什么,容易忽略一件事:蜘蛛拿到的 HTML 可能是另一个版本。移动优先索引之下,抓取与评估主要以智能手机 UA 为主,桌面版更像补充。两个版本的内容、链接一旦不一致,URL 发现、内链权重和索引判断都会跟着跑偏。

蜘蛛用哪个 UA 抓,就决定了它看到什么

搜索引擎的抓取以移动 UA 为主,这一点在服务器日志里能直接看到。如果服务器按 UA 返回不同 HTML,也就是常说的动态服务,就必须保证两种版本在核心内容上一致:标题、H1、正文主体、主要内链、图片的 alt 属性。

常见的事故有这么几类:

  • 移动版为了省流量只输出正文摘要,后半段内容根本没进 HTML
  • 桌面版导航在移动版被折叠进 JS,蜘蛛第一轮抓不到深层链接
  • 移动版列表页只渲染首屏几条,翻页入口丢失
  • 两个版本各自的 canonical 都指向自己,互不承认

这些问题不会让页面立刻掉出索引,但会让蜘蛛对同一份内容做出两套判断,原本一条抓取路径被拆成两条。

三种部署方式,抓取表现并不一样

响应式:同一套 HTML 加 CSS

最省心的做法。URL 唯一,HTML 唯一,蜘蛛不需要在不同版本之间做选择。要做的主要是控制移动端首屏体积,别把正文推到很后面。

动态服务:同一 URL 按 UA 返回不同 HTML

风险最高的一种。要点有两个:一是响应头里要有 Vary: User-Agent,二是 CDN 的缓存键要包含 UA。缓存键不含 UA 时,移动版 HTML 被缓存后可能发给桌面蜘蛛,或者反过来,两边拿到的都是错的版本。这种问题在日志里不容易看出来,需要用不同 UA 各请求一次,对比响应体。

独立移动站:m. 子域或单独域名

两版之间要做对应的双向标注,同时确认移动版自身可被抓取:robots.txt 没拦、服务器可达、没被 noindex。移动版的链接结构要能回到桌面版,否则蜘蛛容易停在 m 站里,走不回主站的其他入口。

判断版本是否一致,最快的办法不是读文档,而是用移动 UA 把响应体抓下来,和桌面版逐项对比。

抓取路径可能被拆成两条

如果两版的链接结构不同,蜘蛛实际会走两条不同的路。日志里的表现是:同一批内容被两套 URL 或两套目录反复抓到,重复发现和重复抓取同时增加,能用在别处的抓取预算被摊薄。

  • 移动版少了深层入口,深层页面的发现时间明显变长
  • 移动版把链接放在 JS 里,第一轮抓取读不到
  • 桌面版有某个聚合页,移动版没有,反向也存在同样情况

还有一种隐蔽情况:桌面 URL 跳到移动 URL,移动 URL 又跳回桌面 URL,形成循环。蜘蛛遇到循环跳转通常会放弃这条链,结果是这个入口彻底失效。

自查清单

  1. 用移动 UA 请求几个代表性 URL,保存完整 HTML
  2. 逐项对比 title、H1、正文长度、主要内链数量
  3. 确认 canonical 在两版中指向同一个首选 URL
  4. 检查 Vary 头与 CDN 缓存键是否包含 UA
  5. 看日志里移动 UA 与桌面 UA 的抓取比例是否合理,有没有异常的重定向链
  6. 独立移动站确认未被 robots.txt 或 meta 标签屏蔽
  7. Sitemap 里只列 canonical 的那个版本,与页面标注保持一致

服务器层面的两个细节

一是首字节时间。移动 UA 的请求如果多走了一层转码或重定向,TTFB 会明显变长,蜘蛛放弃的概率上升。二是跳转类型,桌面到移动的对应关系应当是永久的、可逆的,别用临时跳转或 JS 跳转来替代。

内容一致比版本数量更重要

不必强求全站只有一种部署方式,但同一份内容对蜘蛛只应该呈现一个完整版本。内容、内链、canonical 三者对齐之后,抓取路径才会收敛成一条,URL 发现和重访节奏也才稳定。改完移动版之后,隔一两周回到日志里看一眼移动 UA 的抓取占比和抓取到的 URL 形态,比在后台猜要可靠得多。