站点改移动端的时候,多数人只关心用户看到什么,容易忽略一件事:蜘蛛拿到的 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,形成循环。蜘蛛遇到循环跳转通常会放弃这条链,结果是这个入口彻底失效。
自查清单
- 用移动 UA 请求几个代表性 URL,保存完整 HTML
- 逐项对比 title、H1、正文长度、主要内链数量
- 确认 canonical 在两版中指向同一个首选 URL
- 检查 Vary 头与 CDN 缓存键是否包含 UA
- 看日志里移动 UA 与桌面 UA 的抓取比例是否合理,有没有异常的重定向链
- 独立移动站确认未被 robots.txt 或 meta 标签屏蔽
- Sitemap 里只列 canonical 的那个版本,与页面标注保持一致
服务器层面的两个细节
一是首字节时间。移动 UA 的请求如果多走了一层转码或重定向,TTFB 会明显变长,蜘蛛放弃的概率上升。二是跳转类型,桌面到移动的对应关系应当是永久的、可逆的,别用临时跳转或 JS 跳转来替代。
内容一致比版本数量更重要
不必强求全站只有一种部署方式,但同一份内容对蜘蛛只应该呈现一个完整版本。内容、内链、canonical 三者对齐之后,抓取路径才会收敛成一条,URL 发现和重访节奏也才稳定。改完移动版之后,隔一两周回到日志里看一眼移动 UA 的抓取占比和抓取到的 URL 形态,比在后台猜要可靠得多。