英文版页面写了自己和另外八个语言的 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 必须成对出现 单向写等于没写 新增语言时最容易漏掉反向那一半。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
