网站收录

多语言与地区版本:收录该落到哪个 URL 上

同一份内容做了多语言或多地区版本之后,索引里常常冒出好几个地址,用户点进去看到的却不是想要的语言。这篇文章从 URL 结构、hreflang、canonical 和语言切换链接几个角度,讲清版本之间该怎么对齐关系,以及出现收录错位时按什么顺序排查。

网站收录

多语言与地区版本:收录该落到哪个 URL 上

做了多语言或者多地区版本之后,很多站点会遇到一种情况:同一份内容在索引里冒出好几个地址,用户从搜索结果点进来,看到的却不是他想要的语言版本。这通常不是“收录不了”的问题,而是几个版本之间的关系没有理清。版本之间关系混乱,重复内容、语言错位、展现语言不符这些现象就会一起出现。

一、先分清是版本关系问题还是 URL 结构问题

这两种情况表现很像,但处理顺序不一样。URL 结构问题,是同一个语言下同一篇内容对应了多个地址;版本关系问题,是不同的语言版本在抢同一个查询。可以先从几个现象入手判断:

  • 只有一个语言版本被大量记录,其他版本几乎没有痕迹
  • 同一篇文章在索引里出现两三个不同后缀的地址
  • 搜某个语言的关键词,返回的却是另一语言的页面
  • 切换语言之后地址变了,但内容指向的还是原来那一份

二、三种常见 URL 结构,各有各的代价

子域名

比如 en、jp 各占一个子域名。好处是版本之间隔离清楚,服务器和模板可以分开管;代价是链接权重分散,新版本从零开始积累,互相之间的信号传递要靠 hreflang 和站内链接补。

子目录

比如 /en/、/jp/。主域集中,权重容易叠加,是多数中小站点更省事的选择;代价是目录规则必须统一,尾斜杠、大小写、默认语言的位置都要一次定清楚,否则同一个页面会裂成几个地址。

参数或地区后缀

用 ?lang= 这类参数区分,最容易出现重复地址。如果必须用参数,至少要让不同语言有各自的规范地址,并且不要让参数组合被内链大量扩散。

三、hreflang 能做什么,不能做什么

hreflang 是给搜索引擎的提示,用来说明某个语言或地区对应哪个地址。它不阻止抓取,也不等同于 canonical,更不能保证一定被采用。常见的几个要求:

  • 版本之间要相互指向,不能只从主版本指出去
  • 每个版本也要包含指向自身的 hreflang
  • 语言代码按规范写,地区代码可选但不要臆造
  • 如果存在一个通用版本,用 x-default 指过去

四、版本之间不要互相 canonical

这是多语言站点里比较常见也比较致命的一处:英文页的 canonical 指向中文页,或者反过来。这样等于告诉搜索引擎“这几个地址里只留一个”,另一个版本会慢慢从索引里退出。正确的做法是每个语言版本的 canonical 指向自己,版本之间的关系交给 hreflang 去表达。

五、自动跳转和语言切换链接的坑

按 IP 或浏览器语言做自动跳转,看起来对用户友好,但蜘蛛通常只会看到默认版本,其他版本就失去了被发现的机会。如果确实要跳,尽量让跳转可逆,并保证每个版本都有稳定的直达地址。

语言切换链接也有类似的问题:如果它靠脚本渲染,或者写法上没有可抓取的 href,蜘蛛顺着页面爬不到其他版本。切换入口应该是一组真实的链接,能直接点开、能被抓到。

六、一个可执行的检查顺序

  1. 先定一个默认版本,明确它承担什么角色
  2. 检查 URL 结构是否统一,大小写和尾斜杠是否一致
  3. 检查 hreflang 是否双向指向,并且包含自身
  4. 检查 canonical 是否指向同语言版本,而不是指向别的语言
  5. 检查语言切换入口是不是可抓取的链接
  6. 检查 sitemap 是否覆盖了各个版本的规范地址
  7. 用站内查询观察各版本的收录与展现是否和预期一致
多语言收录的重点不是把每个版本都推上去,而是让每个版本只出现在它该出现的查询里。

调整之后不要急着下结论,观察一段时间各版本的收录变化。如果某个版本始终没有记录,先回到抓取和链接发现这两个环节,看看它是不是根本没被蜘蛛走到,而不是直接归因于页面质量。