现场是这样的。多语言站九种语言,x-default 写的是 https://www.example.com/gl/,这个地址两年前就 301 到 /en/ 了。GSC 的国际定位报告里没有任何一组语言被识别,切换器在结果页里也不出现。补过两轮返回链接,报告没动。

中间走过弯路,把「部分语言版本的返回链接漏了,组内互指不闭合」当成主因,改完现象没变。

这类报错背后常见的原因有几处,逐个排除就行。x-default 指向一个会跳转的地址,组内成员必须是可直接访问的最终页;同一个页面输出了两个 x-default,解析器遇到重复直接放弃整组;语言代码大小写混用,EN 和 en 被当成两个不同的值。

动手时先抓一份英文页的 head,确认 x-default 的地址

curl -s https://www.example.com/en/ | grep -o 'hreflang="x-default"[^>]*'

接着确认该地址是否还在跳转

curl -sI https://www.example.com/gl/ | head -3

随后把 x-default 改成直达的英文页并保证只输出一次

grep -rn 'x-default' templates/base.html

剩下的就是逐版本核对返回链接数量是否一致

for l in en de ja; do curl -s https://www.example.com/$l/ | grep -c 'rel="alternate"'; done

别只看报错消失,验证要多做一步。九种语言的 x-default 全部指向可直接访问的英文页,返回链接条数一致,三周后国际定位报告恢复分组。

补一句。x-default 只是兜底,不参与语言匹配,用它指一个 404 或 301 会让整组失效,代价比不写还大。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189