事情本身不复杂,线索都在日志里。英文目录下线了 200 篇旧文,404 页统一 301 到中文首页。Google 把英文目录的权重全并到中文首页,英文站内页收录一个月掉了四成。

第一反应是「语言判断只按 cookie,蜘蛛请求被默认成中文」,验证下来不成立。

真正麻烦的地方在于,几个原因的现象几乎一样。全局 404 处理规则指向根路径而不是语言对应首页。另一种情况是英文目录的历史外链跟着 301 落到中文页。

不容易想到的是,英文 sitemap 里还留着已删除的地址。

先看英文旧地址的跳转目标

curl -sI https://www.example.com/en/old-post | grep -i location

然后按语言前缀分流 404

error_page 404 /en/404.html;

英文目录跳英文首页

rewrite ^/en/.*$ /en/ redirect;

末了清理英文 sitemap 的死链

grep -c '/en/' sitemap_en.xml

恢复的判定其实很直接。英文旧地址落到英文首页或 404 页,不再跳到中文,英文目录收录停止下滑。

多语言站的默认跳转要带语言前缀,一刀切到主站首页会把各语言权重混在一起。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189