先弄清楚搜索蜘蛛默认拿到的是哪一份 HTML
早期的搜索抓取主要用桌面端 UA,现在的主流搜索平台基本都转向了移动优先。以 Google 为例,多数站点已经默认使用智能手机 UA 抓取,并用抓取到的这份 HTML 去做索引;百度也长期推行移动适配与移动优先的抓取策略。这就带来一个很实际的问题:如果入口页对手机 UA 和电脑 UA 返回的内容不一样,搜索蜘蛛拿到的大概率是移动版那一份,而不是你坐在电脑前打开时看到的样子。
所以入口页里的目标链接能不能被发现,取决于移动版 HTML 源码里到底有没有这些链接,而不是 PC 版页面上有没有。
三种常见部署方式,结果差别不小
1. 响应式,两端共用同一套 HTML
链接本身写在 HTML 里,只是通过 CSS 在小屏下换行、缩小或折叠。搜索蜘蛛读到的 HTML 里 href 依然存在,通常可以正常发现。这是最省心的做法。需要注意的是,即使用 display:none 或折叠面板把某段链接藏起来,蜘蛛在解析 HTML 阶段一般仍能读到链接地址,但这类被隐藏的链接在页面里的权重和可信度通常会被打折扣,不宜作为唯一的链接出口。
2. UA 判断跳转或独立的移动站
服务器根据 UA 判断,把手机访客(移动蜘蛛 UA 常常也在其中)跳到 m. 子域,或者直接返回一套精简版 HTML。如果这套移动版为了加载速度砍掉了列表、导航或页脚链接,那么搜索蜘蛛在移动版里就看不到这些 URL,PC 版里放着再多也没有意义。这是入口页链接「凭空消失」最常见的成因。
3. JS 按屏幕宽度动态插入链接
入口页靠脚本判断设备宽度后再渲染链接,属于依赖渲染才能拿到链接的路径。搜索引擎的渲染队列本身有延迟,也不保证每次都能完整执行脚本,链接被稳定发现的概率会打折扣。
怎么确认蜘蛛到底读到了什么
- 用移动端蜘蛛 UA 直接请求入口页(curl、Postman 或浏览器的 UA 模拟都行),看返回的原始 HTML 源码里有没有目标链接,不要看浏览器渲染之后的 DOM。
- 再用桌面 UA 请求一次,把两份 HTML 做对比,差异的那部分就是风险点。
- 在服务器日志里按 UA 分类,确认移动蜘蛛是否访问过入口页、返回的状态码是不是 200。
- 如果条件允许,观察移动蜘蛛访问入口页之后,是否对目标 URL 产生了新的请求记录。
几个可以落地的调整方向
- 关键目标链接尽量同时存在于两个版本的初始 HTML 里,不要只留给某个断点或某个 UA 渲染。
- 移动版必须精简时,优先砍样式、图片和脚本,尽量保留链接结构本身。
- 不要让 UA 判断把搜索蜘蛛跳到一份完全没有链接的页面上。
- 入口页尽量少依赖 JS 生成链接,能用静态 HTML 输出就直接静态输出。
- 改动入口页结构后,重新用移动 UA 抓一遍源码复核,而不是只在浏览器里肉眼确认。
不同搜索引擎、不同时间点的抓取策略并不完全一致,上面说的是较常见的情况。让链接在移动版和 PC 版里都可见,只是减少「蜘蛛读不到链接」这类技术性损耗,并不代表目标 URL 一定会被抓取或被收录。