同一个页面在移动端和桌面端往往对应不同的地址:响应式站点用同一套 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 分组后检查几件事:
- 主版本 URL 是否被两种 UA 都抓过,还是只有一种在持续访问;
- 移动版 URL 是否只被抓取一两次就再没出现,那通常意味着已被归并;
- 跳转链是否超过一层,中间地址有没有被反复抓取;
- 移动版返回的状态码分布是否正常,有没有成片的 3xx 或软 404。
判断标准很简单:一份内容,理想状态下只保留一条稳定的抓取记录,其余入口只是通往它的路径。
常见坑
- 移动版 canonical 指向自己,桌面版也指向自己,等于把一份内容拆成两份声明。
- Sitemap 同时提交移动版和桌面版,两边的 lastmod 还不一致,更新时间对不上。
- 用 UA 判断跳转,蜘蛛 UA 收到的是空页或直接跳回首页。
- 移动版正文被裁剪,能抓取但内容不完整,发现阶段没问题,后续评估却吃亏。
- 参数式移动地址(?mobile=1)被内链反复传递,形成额外的抓取消耗。
小结
多终端本身不是问题,缺少约定才是。先确定主版本,再从 robots、Sitemap、canonical、重定向这四件事上统一口径,最后用两种 UA 的日志核对抓取记录是否收敛到同一条 URL。做完这一轮,URL 发现的数量会下降,但每条记录的有效性会明显提高。