报错是这么冒出来的。德语站 hreflang 全部写成 de,页面 html lang 用 de-DE,GSC 的国际化报告里德语版本一直挂着「缺少返回链接」,德语词排名还不如英文页。
中间走过弯路,把「hreflang 指向的地址是 302,落地后又被语言 cookie 改写一次」当成主因,改完现象没变。
这类报错背后常见的原因有几处,逐个排除就行。hreflang 的 de 与 lang 的 de-DE 精度不一致,Google 会当成两组语言。还有一种是组内每个页面只写了自己那一行,没有把其他版本列全。
还有一种情况,主题模板把 hreflang 输出在缓存片段里,改完不刷新还在发旧值。
先核对页面实际输出的标签
curl -s https://www.example.com/de/ | grep -Eo '<link rel=[^>]*hreflang[^>]*>'
接着统计全站语言代码写法
grep -rho 'hreflang=[^ ]*' . | sort | uniq -c | sort -rn
然后统一成 de-DE 并补齐双向回指
SELECT ID, post_language FROM wp_posts WHERE post_type='post';
等前面都确认过,再清掉模板缓存后重新抓取德语页
curl -s https://www.example.com/de/ | grep -c hreflang
别只看报错消失,验证要多做一步。国际定位报告里德语组的「缺少返回链接」条目清零,德语页开始按 de-DE 参与排名,英文页抢到的德国流量回落。
de 表示语言、de-DE 表示语言加地区,只要全站统一写一种就能对上,混写才是整组失效的主因。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
