蜘蛛池的入口页,绝大多数人默认是做给电脑端看的。但搜索引擎的抓取早就不只有 PC 一种 UA,移动端爬虫在不少站点上的活跃度已经和桌面端持平甚至更高。如果入口页在手机 UA 下返回一塌糊涂的版面,或者被跳到另一个内容完全不同的页面,抓取行为就会变得难以预期。
这里不讨论排名,只讨论一件事:入口页的移动端形态,会不会影响蜘蛛顺利发现并跟随链接。
一、三种常见做法,先分清
响应式布局(同一 URL)
同一套 URL、同一份 HTML,靠 CSS 适配不同宽度。对蜘蛛来说最省事:一个 URL 只有一个访问结果,不存在两套页面内容对不上的问题,链接也能被稳定发现。批量开入口页时,这是维护成本最低的做法。
独立 m 站(两套 URL)
m.example.com 这类做法会多出一整套 URL 体系。要注意的是,PC 页和 m 页之间需要有明确的相互指向,否则蜘蛛容易在两边各抓一半,链接发现变得零散,入口页本来该起的作用也会被稀释。
按 UA 返回不同内容
按 User-Agent 判断再决定返回什么。这种做法用得好是兼容老站,用得不好就是入口页上的定时炸弹——判断逻辑写错、缓存层配错,蜘蛛拿到的可能就是空白页或者模板报错页。
二、UA 判断最容易踩的三个坑
- 只认完整字符串:把 Googlebot、Bingbot 之类的关键词写成完整匹配,UA 里版本号一变就全部失效,蜘蛛直接落到默认分支。
- 默认分支是空的:很多实现里 else 分支返回一个没有链接、没有正文的壳。普通访客看不到问题,蜘蛛看到的却是一条死路。
- 缓存层不看 UA:CDN 把带 UA 判断的页面缓存成一份,先访问的是谁,后面所有人(包括蜘蛛)就都拿到那一份。这个问题在批量入口页上尤其常见。
三、两套模板的链接要对齐
入口页的核心价值是让蜘蛛顺着链接走过去。如果 PC 版页面里有二十条链接,手机版只剩五条,那么用移动 UA 抓取的蜘蛛能发现的 URL 自然就少了。批量做入口页时,尽量保证两套模板输出的链接集合一致,至少要让导向目标页的那几条链接在所有版本里都存在。
四、上线前的自检清单
- 用移动 UA 和桌面 UA 各抓一次入口页,对比状态码、标题、正文长度、链接数量。
- 关掉 JS 再抓一次,确认主要链接是写在 HTML 里的,不是靠脚本后置插入。
- 检查 CDN 缓存规则,确认不会把某个 UA 的结果缓存给其他 UA。
- 检查移动版是否存在独立的 robots.txt 或 meta robots 设置,避免误封。
- 确认跳转链路在移动 UA 下同样成立,不会中途断掉。
五、两个方向的误区
一种误解是“蜘蛛只看 PC 版”,于是移动端随便应付;另一种反向误解是“必须专门为蜘蛛准备一套移动页面”,于是滑向按 UA 返回不同内容的做法。前者会让你忽略移动抓取,后者的风险则在于两套内容一旦对不上,入口页的可信度就会受影响。更稳妥的思路是:让同一个 URL 对不同设备都能正常渲染,蜘蛛拿到的和其他访客拿到的是同一份东西。
小结
移动端适配在蜘蛛池里算不上什么高深话题,它属于“别自己给自己添堵”的基础工作。把两套模板的链接对齐、把缓存和 UA 分支写对、上线前用不同 UA 各抓一遍,这些动作花不了多少时间,但能避免蜘蛛走到一半发现前面是堵墙。