问题出现得很突然,日志倒是留得挺全。一套内容做了桌面站和 m 子域,模板里桌面页 canonical 写 m 地址,m 页 canonical 写回桌面地址。GSC 里同一批页面在两个月内换了四次规范地址,排名整体下滑。

刚开始盯着「改版时把移动适配关系和 canonical 一起改,互相覆盖」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。两端各自用「对方才是移动友好版本」的逻辑输出 canonical。少数情况下是没有区分 hreflang 与 canonical 的职责,混用了两套信号。

少数情况下是站点地图里同时列了桌面与移动两套地址 规范信号互相打架。

先分别取两端输出的 canonical

curl -s https://www.example.com/post/1 | grep -o '<link rel="canonical"[^>]*>'; curl -s https://m.example.com/post/1 | grep -o '<link rel="canonical"[^>]*>'

两端都自指 用 hreflang 表达对应关系

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

补上双向 hreflang 与 x-default

<link rel="alternate" hreflang="x-default" href="https://www.example.com/post/1">

一个月后核对规范地址是否稳定

site:www.example.com inurl:post/1

改完先别撤,确认这几项。改成两端自指并补 hreflang 后,规范地址不再来回切换,六周内这批页面的展示量回升到改版前的八成。

canonical 表达「哪个地址才是副本的正本」,hreflang 表达「哪个地址对应哪个语言市场」,两件事不要互相顶替。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189