先看现象。响应头写了 Content-Language: en,页面 hreflang 声明 zh-CN,GSC 国际定位报告把页面判成英文,中文流量掉了近一半。

把日志和配置对完,能解释这个现象的基本就这几处。响应头与页面标签冲突,蜘蛛以响应头为准。也可能是反向代理统一加了 Content-Language: en。

少数情况下是多语言站只改了模板没改响应头。

不容易想到的是,缓存把英文版的响应头带到了中文页。

第一件事是看响应头里的语言

curl -sI https://www.example.com/zh/post-1/ | Select-String Content-Language

然后按目录输出正确语言

add_header Content-Language zh-CN;

随后确认页面 hreflang 与响应头一致

curl -s https://www.example.com/zh/post-1/ | Select-String hreflang

末了清缓存后看国际定位报告

curl -X PURGE https://www.example.com/zh/post-1/

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

恢复的判定其实很直接。中文页返回 Content-Language: zh-CN,国际定位报告里的语言判定恢复为中文。

容易忽略的是,响应头优先级高于页面标签,多语言站要两边一起改。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189