移动版跑在 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 才指向另一版,这两个标签别写反。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
