洞察

双语官网为什么会被 Google 当成一个页面:一个网址一种语言

2026 年 9 月 16 日我们给本站加了中文镜像页,9 月 19 日在 Search Console 看到它们被判成英文页的重复页。下面是原因和修法。

发生了什么

本站的中英文案一直同时放在一个页面里,靠一个开关切换显示哪一种。为了让中文用户在 Google 里能搜到,我们给每个页面加了一个 /zh/ 网址,页面标题、描述和语言声明改成中文,两个网址之间用 hreflang 互相指向。

三天后,Search Console 的网址检查对 /zh/ 给出的判定是「重复网页,Google 选择的规范网页与用户指定的不同」,它选的规范页是英文首页。服务页则是「已抓取,尚未编入索引」。

为什么 hreflang 救不了

Google 判断两个网址是不是同一个页面,比对的是内容。两种语言的文案都在同一份 HTML 里,英文页和中文页除了头部几行,字节几乎一样。在它看来这就是同一个页面的两个地址,于是只留一个。

hreflang 的作用是在内容不同的页面之间说明语言关系。它不能让内容相同的两个页面被分别收录。语言声明和标题也不能。

修法:一个网址一种语言

源文件仍然是双语的,构建时按语言拆成两份:英文网址只保留英文节点,/zh/ 网址只保留中文节点。语言开关从「在页面里切换显示」改成「指向另一种语言网址的链接」。

有一条很容易做反:不要按浏览器语言自动跳转。Googlebot 渲染页面时的浏览器语言是英文,如果 /zh/ 一打开就跳回英文页,它又成了一个跳转页。我们只在访客自己点过开关、记住了偏好之后才跳,而且跳转时保留网址里的参数和锚点。

顺手查到的三件事

这个域名以前挂过另一套产品,二十多条旧网址还在被抓,全部返回 404。404 的意思是「可能暂时找不到」,Google 会反复回访;改成 410 是「明确没有了」,去索引更快。这些旧网址没有对应的新页面,所以也不做 301 到首页,无关页面跳首页会被判成软 404。

www 和不带 www 的主机名各自返回 200,Search Console 把它们当两份重复网页。现在 www 一律 301 到主域。服务器对不存在的路径返回的是零字节的 404,品牌 404 页并没有接上;这不影响收录,但影响看到它的人。

给双语站的检查清单

  • 每种语言一个网址,页面里只有那种语言的正文切换语言靠链接,不靠在同一个页面里显示或隐藏。
  • 用 Search Console 的网址检查看「Google 选择的规范网址」它和您声明的不一致,就是内容被判成重复了。
  • 每个网址的 hreflang 都要自指,并指向另一种语言缺一边,Google 会忽略整组。
  • 不按浏览器语言自动跳转只在访客自己选择过之后跳,跳转时保留参数和锚点。
  • 旧网址返回 410,不要 301 到首页站点地图里只放现在存在的网址,看它的「上次读取时间」确认 Google 读过。

告诉我们哪一个环节最耗时

联系我们