英文版页面写了自己和另外八个语言的 hreflang 中文版页面一个都没写 属于单向声明 规范要求互相引用 结果整组被忽略 国际搜索结果里语言版本混着出

一开始怀疑是「hreflang 用 JS 注入 部分页面渲染前为空」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。模板只在部分语言版输出 hreflang。少数情况下是新增语言时忘了补反向声明。

少数情况下是x-default 只在一个页面写。

先检查两个语言版是否互相声明

curl -s https://www.example.com/zh/p/1 | grep -c 'hreflang'

再往下统一由一份配置生成全部语言声明

python build_hreflang.py --all-langs

然后确认每个页面都有 x-default

curl -s https://www.example.com/en/p/1 | grep -o 'hreflang="x-default"'

末了用国际定位报表复验

https://search.google.com/search-console

别只看报错消失,验证要多做一步。每个语言版都包含全部语言声明 国际定位报表里各地区命中正确版本。

hreflang 必须成对出现 单向写等于没写 新增语言时最容易漏掉反向那一半。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189