这个坑值得记一笔。语言切换按钮点了之后跳到 /en/ 首页,hreflang 却指向 /en/ 对应文章,用户和蜘蛛看到的路径完全不同。

原因不止一个,得分开看。切换组件没有带上当前文章的路径;hreflang 由插件按文章映射生成;两个模块读取的语言配置不是同一份。

动手时先点击切换按钮看实际落地地址

curl -sI https://www.example.com/en/ | head -1

随后让切换保留当前路径

echo str_replace('/zh/', '/en/', $current_url);

末了确认与 hreflang 指向一致

curl -s https://www.example.com/zh/a/ | grep -i hreflang

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

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

改完先别撤,确认这几项。切换后落到对应语言的文章页,与 hreflang 一致,跨语言跳失率下降。

用户和蜘蛛看到的跳转目标要一致,否则 hreflang 声明的地址没人访问,权重也传不过去,两边都吃亏。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189