多语言站加了 x-default,指向的却是英文页,自动跳转的语言选择页反而没有任何版本被声明,报告提示这组关系不完整。乍看像缓存或者权限的锅,追下去往往不是。

curl -s https://example.com/ | grep -o 'x-default[^>]*'
# 每个页面只允许出现一条 x-default

追下去是这么回事:x-default 表示没有匹配到用户语言时的兜底页,通常应指向语言选择页或者默认站点;指到某一个具体语言,等于把其他语种的用户都强行送过去。

碰到「hreflang x-default」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

具体做法是,先确认站内是否存在独立的语言选择页面;有就指向它,没有就指向默认语言的首页;检查每个页面里的 x-default 只出现一次,重复的要删。

验收就看一点,x-default 正确指向兜底页,语言关系报告里不再提示缺项。

作者 9823189