站点运营

站点运营:多语言与多地区版本自查,别让蜘蛛把不同版本当成重复内容

多语言或多地区站点常见的麻烦,不是内容写错,而是同一个页面被当成两三个版本分别处理。本文梳理 hreflang 的自查清单,包括 URL 结构、互相指向、x-default、语言地区码写法,以及它和 canonical、Sitemap、robots.txt 的配合方式,帮助你把版本关系讲清楚。

站点运营

站点运营:多语言与多地区版本自查,别让蜘蛛把不同版本当成重复内容

做多语言或多地区站点时,最麻烦的情况往往不是内容写错,而是同一篇内容被搜索引擎当成两三个版本分别处理:抓取预算被分摊,权重被稀释,用户也可能被带到语言不对的页面。hreflang 就是用来处理这类关系的,但它不是一个加上就完事的标签,配错反而会制造新的矛盾信号。

先分清两个概念

多语言指同一内容的不同语言版本,比如 zh-CN、en、ja;多地区指同一语言针对不同市场,比如 en-US、en-GB、en-AU。两者可以叠加,也可以只做其中一层。很多站点的混乱,就出在想用一个标签同时表达语言和地区,结果既没讲清楚语言,也没讲清楚地区。

自查清单

  • 每个语言或地区版本是否有独立、稳定的 URL,通常放在子目录或子域名下,而不是用参数切换语言;
  • 所有版本是否互相指向,包括自己指向自己这一条,缺了它整组标注可能被忽略;
  • 是否设置了 x-default,指向语言选择页或默认版本;
  • 代码写法是否规范:语言用 ISO 639-1,地区用 ISO 3166-1 Alpha 2,中间用短横线连接,如 zh-CN;
  • 标注只出现在一个地方并保持一致:页面 head 里的 link 标签、HTTP 响应头、或 Sitemap 注释,不要三处各写一套;
  • 是否存在指向 404、重定向地址、或被 robots.txt 屏蔽的地址。

三种常见错误

单向标注

A 页面指向 B 页面,B 页面却没有指回 A,搜索引擎一般会倾向于忽略这组关系。标注必须是双向闭合的,新增一个语言版本时,记得回头补上其他版本的指向。

语言地区码写混

把 en 写成 en-EN,把 zh-Hans 和 zh-CN 混着用,或者同一组里有的写 zh-CN、有的写 zh-cn,都属于给自己添乱。选定一套写法后整站统一。

和 canonical 打架

如果英文页面的 canonical 指向中文页面,同时又用 hreflang 声明两者是不同语言的并列版本,两个信号就矛盾了。多语言页面的 canonical 通常指向自身版本的规范地址,跨版本的合并交给 hreflang 表达。

和其他配置的配合

Sitemap 可以用注释形式带上 hreflang,适合版本较多、手工维护 head 容易遗漏的站点。robots.txt 注意不要把某个语言目录整体挡住,否则那一组标注里就出现了无法抓取的地址。如果站内做了自动跳转,也要留出让蜘蛛访问其他版本的路径,别在跳转里把它们藏起来。

上线后怎么验证

  • 抽查几条 URL,确认 head 里的输出和预期一致;
  • 查看服务器日志中各语言目录的抓取分布,某个版本长期零抓取通常说明指向断了或被挡住了;
  • 观察搜索结果里不同地区用户看到的版本是否符合预期。
hreflang 解决的是“哪个版本给谁看”的问题,它不替代内容质量,也不替代本地化。内容本身如果没有针对当地用户做调整,标注再规范也只是把机器安排好,用户未必买账。

建议把这份清单固定下来:每次新增语言、调整 URL 结构、或者做站点改版时,从头过一遍。版本关系讲清楚了,蜘蛛和用户都不用在几个相似页面之间猜来猜去。