網站收錄

多語言站点的收錄归属:語言版本與 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 是否已经按预期指向自己、搜尋结果里的語言與地区是否匹配。如果一段時間後某個版本依然没有進索引,回到第一步,先確認它是否能被正常抓取,再谈内容层面的問题。