先把当时的情况摆出来。日语版内容还没翻译完,模板统一下了 noindex,中文页的 hreflang 仍然指向日语地址。Search Console 里日语版一直显示已发现未编入索引,中文页的日本流量也没有起来。
真正麻烦的地方在于,几个原因的现象几乎一样。hreflang 目标不可索引时,整组替代关系会被一起忽略。也可能是noindex 与 hreflang 是互斥信号,同时存在时以 noindex 为准。
另外,标签在模板里无条件输出,没有判断目标页的索引状态。少数情况下是目标页返回 200,但 noindex 是 JS 后插入的,蜘蛛看到的是另一个版本。
先看目标页的 robots 指令
curl -s https://www.example.com/ja/post-1/ | grep -i 'robots'
然后确认响应头有没有重复指令
curl -sI https://www.example.com/ja/post-1/ | grep -i x-robots
上线前先撤掉 noindex 再放标签
sed -i '/noindex/d' /var/www/html/ja/post-1/index.html
复验整组指向是否都返回 200
for u in zh ja en; do curl -s -o /dev/null -w "$u %{http_code}\n" https://www.example.com/$u/post-1/; done
恢复的判定其实很直接。撤掉日语版 noindex 并把标签改成条件输出后,日语页十天内进索引,中文页的日本展现开始出现。
容易忽略的是,内容没准备好就先别输出指向它的 hreflang,空指向比不写更糟,整组关系都会被判无效。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
