记录一下那天晚上的排查过程。日文版目录有一万两千个页面,GSC 的国际定位报告里 61% 被标成英文,剩下的一部分标成未知。页面 html lang 是 ja,正文也是日文,站点是纯静态输出。试过在 sitemap 里补 xhtml:link,报告没有任何变化。

刚开始盯着「URL 里没有任何语言标识,目录名是 /docs/ 而不是 /ja/」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。html lang 在模板里被英文站的配置覆盖,只有首页写对了。另一种情况是正文里嵌了大段英文参数表和代码块,语言识别按字符占比判断。

少数情况下是hreflang 只写了页面里的,sitemap 那份缺失导致优先读了旧数据。

上来先抽取几个被判错的页面,看 html lang 实际输出

curl -s https://www.example.com/docs/start | grep -o '<html[^>]*>'

然后检查模板里 lang 的取值来源

grep -rn '<html' templates/ | head

补上明确的语言目录并把 hreflang 一并输出

curl -s https://www.example.com/sitemap-ja.xml | grep -c 'hreflang="ja"'

剩下的就是确认正文里英文段落的比例是否过高

curl -s https://www.example.com/docs/start | python -c "import sys,re;t=sys.stdin.read();print(len(re.findall(r'[a-zA-Z]',t)),len(re.findall(r'[\u3040-\u30ff]',t)))"

怎么算真的好了,看的是同一批现象。修正后重新抓取,被判成英文的比例降到 10% 以下,国际定位里日文条目和实际页面数对得上。

语言判定是按页面内容算的,技术文档里英文术语多,lang 写对也只能改善,不能保证全部纠正。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189