網站收錄

多語言與地区版本:收錄该落到哪個 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. 用站内查询观察各版本的收錄與展現是否和预期一致
多語言收錄的重点不是把每個版本都推上去,而是让每個版本只出現在它该出現的查询里。

調整之後不要急着下结论,观察一段時間各版本的收錄變化。如果某個版本始终没有记錄,先回到抓取和連結發現這两個环节,看看它是不是根本没被蜘蛛走到,而不是直接归因于頁面质量。