先把当时的情况摆出来。英文版 hreflang 写成 /en/post-1,实际地址是 /en/post-1/,访问返回 301,组里其余语言都带尾斜杠,整组标签被判不一致全部失效。

原因不止一个,得分开看。带与不带尾斜杠是两个地址,301 之后标签失效。另一种情况是模板拼接语言前缀时漏了结尾斜杠。

少数情况下是sitemap 里的地址带斜杠,两处不一致。不容易想到的是,部分语言目录带斜杠,部分没有。

上来先比对 hreflang 与实际地址

curl -s https://www.example.com/en/post-1/ | Select-String hreflang

再往下统一补上尾斜杠

echo '<link rel="alternate" hreflang="en" href="https://www.example.com/en/post-1/">';

接着确认所有语言版本都带斜杠

curl -s https://www.example.com/post-1/ | Select-String hreflang | Measure-Object -Line

提交后在报告里复核

curl -s "https://www.google.com/ping?sitemap=https://www.example.com/sitemap.xml"

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

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

怎么算真的好了,看的是同一批现象。所有 hreflang 地址与真实 URL 完全一致并返回 200,GSC 不再报备用网页错误。

提醒一点。hreflang 是精确匹配,差一个斜杠整组都白写。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189