发布时间:2026-09-24 12:32 更新时间:2026-09-24 12:32 阅读量:0
不少站长在服务器上给主域名配了一段 UA 判断,手机一访问就 302 跳到 m.example.com,当时觉得省事:PC 模板和手机模板各写各的,互不干扰。跑了几个月做收录检查才发现,百度里同一个页面出现了两条结果,一条是 www 的,一条是 m 的,权重被拆成两半,关键词排名反而不如只做一套模板的同行。这个问题不是跳转本身有错,而是跳转方式、适配声明和站内链接没有统一口径。下面把原理、配置和取舍讲清楚,你可以对照自己的站逐项排查。
自适应(响应式)是同一套 HTML、同一个 URL,靠 CSS 媒体查询和 viewport 让浏览器自己决定怎么排版。对搜索引擎来说,PC 和手机看到的是同一个地址,权重天然集中,维护也只有一份模板。
独立 m 站则是另起一个域名或子域,服务端根据 User-Agent 判断设备后跳转。它的好处是移动端模板可以做得更轻、交互更贴近原生 App,老站改造成本低;代价是多了一套 URL、一套模板和一次跳转,任何一环没配好都会造成收录分散。
收录分散通常来自三种情况:一是跳转用了 302 且长期不变,搜索引擎把它当成临时行为,仍会保留 PC 版 URL 的抓取与展示;二是 m 站页面里没有指向 PC 版的适配声明,两边被当作两个独立站点处理;三是站内链接混用,PC 页面链到 m 页面、m 页面又链回 PC 页面,爬虫在两套 URL 之间来回爬,分配不到明确的规范页。判断方法很直接:在百度搜索资源平台看“移动适配”与“索引量”里的 URL 分布,如果同一篇内容同时出现在 www 和 m 两个路径下,基本就是这个问题。
如果短期内不打算改成自适应,至少要把跳转和适配信号做规范。Nginx 上做 UA 判断跳转时,用 301 而不是 302,明确告诉搜索引擎这是长期地址变更;同时给 m 站页面加上 canonical 指向 PC 版(或反向,取决于你把哪个当规范页),并在百度搜索资源平台提交移动适配规则。下面是一段常见写法,仅作参考,实际 server_name 与路径按你的环境替换:
# 放在主域名的 server 块内,仅对手机 UA 跳转到 m 站
set $mobile 0;
if ($http_user_agent ~* "(Android|iPhone|iPad|iPod|Mobile|Windows Phone)") {
set $mobile 1;
}
if ($request_uri !~* "^/api/") {
set $mobile "${mobile}1";
}
if ($mobile = "11") {
return 301 https://m.example.com$request_uri;
}
这段配置有两个要点:一是把接口路径排除掉,避免 App 或小程序调用接口时被跳走;二是跳转后 m 站页面里的 canonical 要指向自己,同时通过适配声明告诉搜索引擎它对应哪个 PC 页面,不要两边都写 canonical 指向对方,那样会互相冲突。
如果用的是 WordPress,插件或主题里常见的 wp_is_mobile() 判断也可以,但要注意它依赖 UA,容易被伪装 UA 绕过,缓存插件开启页面缓存时还可能把手机版缓存给 PC 用户,出现“电脑打开是手机版”的串版现象。遇到这种情况,优先检查缓存插件的“按设备区分缓存”选项是否打开。
长期看,如果内容量不大、模板可改,收敛到一套自适应模板是更省心的做法。迁移不要一步到位,按下面顺序走,能把排名波动压到比较小。
第一步,先把自适应模板做出来,在 PC 域名下直接上线,保证手机访问 www 时正常显示,此时先不要删 m 站。第二步,在 m 站页面加 301 指向对应的 PC 地址,让搜索引擎逐步把 m 站的权重转移过去。第三步,观察一到两周索引变化,确认 m 站 URL 数量下降、PC 站移动索引上升后,再关掉跳转规则、下线 m 站解析。第四步,在搜索资源平台更新站点属性,把移动适配从“独立移动站”改为“自适应”,并重新提交 sitemap。
迁移期间有两件事别做:一是不要同时改域名和改模板,变量太多出问题不好定位;二是不要在 m 站下线后立刻删除旧 URL 的跳转规则,保留一段时间 301 有利于爬虫完成换血。具体保留多久以搜索引擎的抓取反馈和官方文档为准,不同站点收录体量差异较大。
最后提醒一句,无论选哪种方案,站内链接、sitemap、canonical 三处的口径必须一致。很多“收录分散”并不是技术做错了,而是这三处各说各话,搜索引擎只能按自己的理解去猜,结果自然就分裂了。
| 📑 | 📅 |
|---|---|
| WordPress 开启 HTTPS 后台重定向循环:is_ssl 与反代头排查 | 2026-09-24 |
| 宝塔面板Nginx伪静态改了不生效:规则文件位置与重载验证 | 2026-09-24 |
| WordPress数据库连不上但宝塔显示正常:主机名与socket排查 | 2026-09-24 |
| WordPress改文章前台不变:三层缓存清理顺序与验证 | 2026-09-24 |
| 宝塔面板磁盘挂载与网站目录迁移:/www 换盘后的路径、权限与面板数据同步 | 2026-09-24 |
| 宝塔面板定时任务备份到对象存储:命令行工具安装、密钥权限与保留份数设置 | 2026-09-24 |
| PHP-FPM 进程数怎么调:pm.max_children 与内存换算、502 反复排查 | 2026-09-25 |
| MySQL只允许本机连接后网站报错:bind-address与用户host授权取舍 | 2026-09-25 |
| WordPress文章ID与固定链接优化:伪静态改动后旧链接兼容 | 2026-09-25 |
| 宝塔面板网站备份还原到另一台服务器:跨机迁移的完整流程 | 2026-09-25 |