事情本身不复杂,线索都在日志里。九个语言版本的页面 canonical 全部指向英文版 模板里把默认语言地址写死了 德语版 日语版全被当成英文的副本 非英语版本收录几乎为零 只有英文版有排名
第一反应是「hreflang 与 canonical 指向不同地址」,验证下来不成立。
这类报错背后常见的原因有几处,逐个排除就行。canonical 用了全局默认语言变量。少数情况下是多语言插件没接管 canonical 输出。
少数情况下是语言切换链接是 JS 跳转 没有独立 URL。
上来先抽两个语言版看 canonical
curl -s https://www.example.com/de/p/1 | grep -o 'canonical[^>]*'
再往下改成输出当前语言地址
echo '<link rel=canonical href=' . $current_url . '>';
接着确认 hreflang 与 canonical 自指一致
curl -s https://www.example.com/ja/p/1 | grep -o 'hreflang="[^"]*"'
剩下的就是在 GSC 分语言属性里复验
https://search.google.com/search-console
改完先别撤,确认这几项。每个语言版 canonical 自指 非英语版本开始有独立收录和展现。
这里还有个坑。多语言站最常见的错误就是 canonical 写死主语言 等于亲手告诉蜘蛛其他版本是副本。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
