移动版跑在 m 子域,模板是单独一套,head 里只有 viewport 没有 canonical,桌面版则有自引用。GSC 里同一篇文章被拆成两条,移动版那条一直停在已发现。

一开始怀疑是「站点没有配置移动适配声明,引擎只能靠标签判断」,查了一圈,方向不对。

真正麻烦的地方在于,几个原因的现象几乎一样。两套模板分开维护,移动版漏了 canonical。另一种情况是移动版把 alternate 写成了指向自己。

少数情况下是移动版 HTML 比桌面版少三成内容。

动手时先对比两版的 head 输出

curl -s https://m.example.com/post/1 | grep -i -E 'canonical|alternate'

移动版补自引用 canonical

echo '<link rel="canonical" href="https://m.example.com/post/1">'

桌面版补 alternate 指向移动版

echo '<link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.example.com/post/1">'

两

边

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

恢复的判定其实很直接。补完标签后两版在报告里合成一组,移动版的已发现条目一周内进了索引,重复网页提示消失。

移动版的 canonical 应该指向自己,alternate 才指向另一版,这两个标签别写反。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189