網站收錄

多語言站点的收錄處理:語言目錄、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. 在索引报告里按語言目錄分別看收錄量,而不是只看整站總量。
多語言站点的收錄問题,多數不在技術配置,而在内容是否真的做了区分。配置只能让蜘蛛看懂结构,内容才决定這些頁面值不值得單獨進索引。