英文页的 head 里只写了指向中文和日文的 hreflang,没有指向自己,Google 直接忽略整组标注,日文页排名一直上不去。

一开始怀疑是「x-default 有写但 self 缺失,分组不闭合」,查了一圈,方向不对。

真正麻烦的地方在于,几个原因的现象几乎一样。自我引用被当成冗余省掉了,实际是必需的。少数情况下是模板循环时跳过了当前语言。

还有一种情况,canonical 与 hreflang 指向不同地址,加剧冲突。

第一件事是检查当前页是否包含自身

curl -s https://www.example.com/en/post/ | grep -o 'hreflang="en" href="[^"]*"'

补上自引用

add_action('wp_head', function(){ echo '<link rel="alternate" hreflang="en" href="'.get_permalink().'">'; });

接着确认三语互相指向

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

末了跑一次整组校验

curl -s 'https://search.google.com/test/rich-results?url=https://www.example.com/en/post/' -o rr.html

这次没动代码,只在配置和运行环境上找原因。

隔了一天再看,现象没变,说明不是偶发。

恢复的判定其实很直接。每页的三个 hreflang 里包含自身,双向引用齐全,四周内日文页的曝光量出现增长。

补一句。自引用看着多余,但它是分组闭合的前提,缺一条整组都作废。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189