这类问题我又碰上了一次。站点准备做英文和日文版本,纠结用 /en/ 子目录还是 en.example.com 子域名,担心后期迁移成本。

这类报错背后常见的原因有几处,逐个排除就行。子目录继承主域权重,配置更简单;子域名便于独立部署,但权重需要重新积累;hreflang 的写法在两种结构下略有差别。

动手时先确定结构再统一生成地址

https://www.example.com/en/

然后在每组页面输出对称的 hreflang

hreflang="en" href="https://www.example.com/en/"

等前面都确认过,再确认各版本 canonical 自指

curl -s https://www.example.com/en/ | grep -i canonical

这类问题以前遇到过,但这次的触发条件和上次不一样。

这类改动我都写进变更记录,过两周再出问题时能对上号。

改完先别撤,确认这几项。各语言版本的收录独立增长,切换语言时不会互相顶替。

补一句。结构一旦上线再换成本很高,子目录适合权重集中,子域名适合独立运营,先想清楚再动手,别等收录起来才后悔。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189