问题出现得很突然,日志倒是留得挺全。日语内容放在 /ja/ 下,模板里只有中文页和英文页输出了 hreflang,日语页一行都没有,结果搜日语词时出来的全是 /en/ 的页面。

刚开始盯着「页面 lang 写成 ja 但 hreflang 缺省,Google 只能靠内容猜语言」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。日语目录的模板分支没接进语言数组,标签根本没渲染。还有一种是hreflang 用绝对地址拼装,/ja/ 前缀被域名变量吃掉。

少数情况下是日语页的 canonical 指向了英文版,信号互相打架。

上来先看一下 /ja/ 页面里到底有没有标签

curl -s https://www.example.com/ja/ | grep -ci hreflang

然后对比中英日三版的输出差异

for d in / /en/ /ja/; do echo $d; curl -s https://www.example.com$d | grep -c hreflang; done

接着在语言数组里补上 ja 键值

define('WP_LANG_DIR', '/ja/');

末了重新生成并抽查页面源码

curl -s https://www.example.com/ja/post-1/ | grep hreflang

怎么算真的好了,看的是同一批现象。日语页源码里出现 ja、zh-CN、en 互指的完整一组,两周后日语词的首位结果换回 /ja/ 目录,英文页的日文展现量下降。

这里还有个坑。语言版本增删时最容易漏模板分支,加目录必须同步检查输出,否则新语言会长期靠内容猜语言。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189