多语言站有 zh、en、ja 三个版本,head 里 hreflang 写了四组,其中 x-default 指向 https://www.example.com/default/,这个地址改版时被删了,现在返回 404,GSC 多语言报告持续报错。

一开始怀疑是「返回 404 的地址同时出现在 sitemap 的备用链接里」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。x-default 用了旧模板里的默认路径,改版时没人同步。少数情况下是x-default 本该指向语言选择页,却被写成某个具体语言版本。

还有一种情况,CDN 把 404 缓存了,源站修好之后仍然返回 404。

动手时先确认 x-default 地址的真实状态

curl -sI https://www.example.com/default/ | head -3

接着在模板里找到 x-default 的输出位置

grep -rn 'x-default' themes/ --include=*.php

再往下清掉 CDN 上缓存的 404

curl -X PURGE https://www.example.com/default/

复查 sitemap 里的备用链接数量

curl -s https://www.example.com/sitemap.xml | grep -c 'xhtml:link'

别只看报错消失,验证要多做一步。x-default 返回 200,GSC 多语言报告里这一组的错误消失,三个版本之间的相互指向都能被解析。

容易忽略的是,x-default 是给语言没匹配上的用户兜底,指到某个具体语言版本会把默认语言强行放大。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189