网站收录

多语言站点的收录处理:语言目录、hreflang 与重复页面

多语言站点的收录问题,多半不是蜘蛛爬不到,而是同一个页面被拆成了好几个版本。本文从 URL 结构的取舍、hreflang 与 canonical 的分工、自动跳转对抓取的干扰,到机器翻译内容的重复风险,给出一套可落地的排查思路和上线检查清单。

网站收录

多语言站点的收录处理:语言目录、hreflang 与重复页面

做多语言或多地区站点时,收录问题往往不是出在抓取环节,而是出在“同一个页面被拆成了几个版本”。蜘蛛能爬到各个语言版本,但索引里可能出现重复、错配,或者只有某一种语言被收录。理顺这件事,重点在 URL 结构、语言标注和内容本身三处。

语言版本的组织方式决定了 URL 长什么样

常见三种做法,各有代价:

  • 子目录(example.com/en/):权重集中、配置简单,是最常用的方案。
  • 子域名(en.example.com):适合不同语言由不同团队或不同服务器维护的情况,但权重和运维都更分散。
  • 参数(example.com/page?lang=en):不建议用来区分语言,参数版本容易和主版本被当成重复内容,也容易在抓取调度中被忽略。

目录命名上,如果只区分语言,用 /en/、/ja/ 这类写法就够了;如果要同时区分地区,再用 /en-us/、/en-gb/ 这种带地区的写法,但要想清楚这些页面是否真的有内容差异。另外,一旦选定结构就不要频繁更换——语言版本换目录,等于把整批 URL 重做一遍,收录需要重新走一轮。

hreflang 与 canonical 各管一件事

这两个标签经常被混为一谈,其实分工很清楚:

  • hreflang 告诉搜索引擎“这几个页面是同一内容的不同语言版本”,是一种推荐关系,不会合并页面。
  • canonical 告诉搜索引擎“以哪个 URL 为准”,是合并关系,被指向的版本才有机会进入索引。

所以多语言页面的 canonical 一般指向自己这个语言版本的规范地址,而不是指向英文原版。如果所有语言版本都 canonical 到英文页,其他语言版本基本不会被单独收录。

hreflang 建议双向标注:英文页指向中文页,中文页也要指回英文页,单边标注容易被忽略。可以再补一个 x-default,用于没有匹配语言时的兜底页面。标注里使用的地址,要和页面的规范地址保持一致,不要一边写带参数的 URL,一边写不带参数的。

别用自动跳转来决定蜘蛛看哪个版本

按浏览器语言或 IP 做自动 302 跳转,对真实用户是方便,对蜘蛛是干扰。蜘蛛通常从单一地区发起请求,如果被跳到英文页,其他语言版本可能长期不被抓取。更稳妥的做法是让每个语言版本都有可直连的 URL,自动跳转只作为用户侧的辅助,并且可以被关闭或绕过。

同样地,语言切换器尽量用普通链接实现,让蜘蛛能从任意一个版本走到其他版本,而不是只绑在 JS 事件上。内链入口顺畅,各语言版本的发现和重抓都会快一些。

机器翻译内容是重复内容的高发区

整站机翻、只替换货币符号和电话、正文结构完全一致,这类页面在索引评估里很难被当成独立内容。可以做的事:

  • 语言版本要有独立的标题、描述和正文表述,而不是逐句直译。
  • 本地化元素(价格、地址、联系方式、案例)尽量换成该地区的真实信息。
  • 没有足够内容支撑的语言版本,宁可先不做,也不要先上一批空壳页。

上线后的检查清单

  1. 每种语言的规范地址是否能直接打开,不依赖跳转。
  2. hreflang 是否双向、是否覆盖所有语言版本,指向的地址返回码是否正常。
  3. canonical 是否指向自身语言版本的规范地址。
  4. sitemap 是否按语言分组,且只放规范 URL。
  5. robots.txt 是否误挡了某个语言目录。
  6. 在索引报告里按语言目录分别看收录量,而不是只看整站总量。
多语言站点的收录问题,多数不在技术配置,而在内容是否真的做了区分。配置只能让蜘蛛看懂结构,内容才决定这些页面值不值得单独进索引。