网站收录

多语言站点的收录归属:语言版本与 hreflang 的核对顺序

同一套内容做了多个语言版本,收录状态常常一团乱:有的版本被归并,有的完全没进索引。这篇文章从 URL 结构、hreflang 写法、canonical 指向和内链入口几个方面,给出一个分语言核对收录的顺序,帮助判断页面是没被发现,还是被发现后被当成了重复内容。

网站收录

多语言站点的收录归属:语言版本与 hreflang 的核对顺序

同一套内容做了多个语言版本,本来是想覆盖不同地区的搜索需求,但实际看到的结果常常是:英文页被当成中文页的重复内容、某个语言版本一个都没进索引、搜索结果的标题和摘要显示的是另一种语言。这类问题多半不是抓取不够,而是语言版本之间的关系没理清楚。

先看清有几种“语言入口”

在动手改之前,先把站点实际的访问入口列出来。常见的结构有三种:子目录(example.com/en/)、子域名(en.example.com),以及用参数或 Cookie 切换的同一 URL。

  • 子目录和子域名:每个语言版本有独立 URL,原则上可以各自被抓取和保留。
  • 参数或 Cookie 切换:URL 相同、内容随访客变化,搜索引擎通常只会保留其中一个版本,其余语言很难被单独索引。
  • IP 或浏览器语言自动跳转:这是最容易把收录搅乱的做法——蜘蛛从哪个入口进来,看到的内容可能和用户不一样。

hreflang 是提示,不是收录指令

很多人以为加上 hreflang,就等于告诉搜索引擎“这些页面是不同语言版本,请分别收录”。实际上它只是减少误判的提示,本身不保证任何页面被索引。真正起作用的,仍然是页面能不能被抓取、内容是否够独立,以及 canonical 把信号指向了谁。

写 hreflang 时常见的几个问题:

  • 缺少自引用:A 页面标注了 B 和 C,却没有标自己。
  • 双向不一致:英文页指向中文页,中文页没指回英文页。
  • 指向了重定向页、noindex 页或已删除的地址。
  • 语言码和区域码写错,例如把 zh-CN 写成 zh_cn。
  • 没有 x-default,地区匹配不上时没有默认页可用。

按顺序核对收录状态

  1. 分语言查收录:不要用一个总数判断,分别看每个语言版本的情况,找出是全体都没进索引,还是只有个别版本缺席。
  2. 检查 canonical:确认每个语言页的 canonical 指向自己,而不是统一指向主语言版本。跨语言互指是收录丢失的常见原因。
  3. 检查自动跳转与内容差异:用不带 Cookie、不带地理信息的方式访问一遍,看看返回的是不是目标语言版本。
  4. 检查站点地图:语言版本是否各自出现在 sitemap 中,或者是否在 sitemap 里带了 hreflang 标注。
  5. 检查内链:如果全站导航只链向一种语言,其他语言版本只能靠 sitemap 被发现,抓取深度会明显变差。
  6. 检查内容是否真的不同:整页机翻、只换了几个词、或者干脆是同一段文字的复制,都可能被判为重复内容。
把多语言站点的收录问题拆成两件事看:URL 是否是独立的,内容是否能独立成立。前者决定能不能被单独抓取,后者决定值不值得单独保留。

处理时的取舍

不是每种语言都需要单独建目录。如果某个语言只是翻译工具生成、之后没有维护,合并到主版本,或者干脆不做,往往比让一堆低质翻译页占着索引更清爽。

反过来说,如果某个语言确实有本地化的内容和运营,就应该保证它有独立 URL、独立 canonical、独立的内链入口,并在 sitemap 里单独列出。这样在核对时,才能分清是“没被发现”,还是“被发现但被归并”。

调整之后的观察点

改完不要期待立刻看到变化,可以重点关注三件事:各语言版本的抓取记录是否分开、canonical 是否已经按预期指向自己、搜索结果里的语言与地区是否匹配。如果一段时间后某个版本依然没有进索引,回到第一步,先确认它是否能被正常抓取,再谈内容层面的问题。