报错是这么冒出来的。语言切换里列了几十种语言,hreflang 也跟着全部输出,实际有内容的只有五个版本,其余全是空列表。
这类报错背后常见的原因有几处,逐个排除就行。语言列表按配置全量输出,没有判断是否有内容。另一种情况是空版本页面返回 200 但列表为空。
少数情况下是hreflang 指向的地址没有对应翻译。
第一件事是统计 hreflang 数量与实际版本
curl -s https://www.example.com/ | grep -c 'hreflang'
只输出有内容的语言版本
add_filter('wpseo_hreflang', 'only_nonempty_langs');
空版本返回 404 或跳回主语言
if (empty($posts)) { status_header(404); }
白天有业务在跑,能验证的部分都压到了晚上做。
当时还开着另一个排查窗口,两边日志对照着看才定位到。
别只看报错消失,验证要多做一步。hreflang 数量与实际版本一致,空版本不再被索引,语言关系的可信度提升。
补一句。声明了却没有对应内容的语言版本,会让整组标签被判定不可靠,宁可少写也不要凑数。这类问题最好一次改到位,反复小改反而容易把原因搅混。