站点运营

站点运营:多語言與多地区站点自查,別让蜘蛛把語言版本当成重复内容

多語言、多地区站点最容易出現的問题,是同一份内容被拆成好几套 URL,而 hreflang、canonical 和跳轉逻辑又没寫對,蜘蛛只能靠猜。這篇文章给出一份可照着做的自查清單,帮你在扩大覆盖面之前,先把各語言版本之間的關系理清楚。

站点运营

站点运营:多語言與多地区站点自查,別让蜘蛛把語言版本当成重复内容

做多語言或多地区站点时,常见的起点是這样的:主站跑得還行,于是顺手複製一套英文版、繁中版、日文版。頁面能打開,用戶也能切換語言,看起来没什么問题。但抓取日誌里往往是另一番景象——不同語言的頁面被反复抓取,抓取预算被摊薄,甚至某個語言版本長期進不了索引。

問题通常不在翻译质量,而在版本之間的關系没有讲清楚。蜘蛛看到的是几個内容高度相似、URL 结构又各自獨立的頁面,它只能自己判断谁是主、谁是副本,判断结果未必和你的预期一致。

先搞清楚蜘蛛面對的是哪種局面

在動手改之前,先確認你的多語言實現方式属于哪一類。不同的實現方式,後續需要补的信号完全不一样。

URL 结构决定了一半的問题

  • 子目錄:example.com/en/、example.com/zh-hant/。结构集中,權重不易分散,多數情况是較好選擇。
  • 子域名:en.example.com。适合服務器或运营团队分离的情况,但和主站的關系需要額外声明。
  • 獨立域名:example.co.uk 這類 ccTLD,地区信号最强,维護成本也最高。
  • 參數或 Cookie 切換語言:最难被稳定抓取。同一個 URL 返回不同語言内容,蜘蛛往往只记住其中一種。

hreflang 的三條硬規則

  1. 双向:A 頁指向 B 頁,B 頁必须指回 A 頁。單向声明基本等于没寫。
  2. 自引用:每個頁面也要把自己算進語言集合里,包括 x-default 頁面。
  3. 代碼規范:語言用 ISO 639-1,地区用 ISO 3166-1 Alpha 2,例如 zh-Hans、zh-Hant、en-US、pt-BR。只寫 zh 或 en,然後指望蜘蛛自己分辨简繁,通常不現實。

自動跳轉是最容易被忽略的坑

不少站点會根據 IP、浏览器語言或 UA 自動 302 到對應語言版本。對真實用戶這是体驗優化,對蜘蛛可能是灾难:它從某個地区 IP 抓取时被一路跳走,于是永遠看不到你希望它抓的那個頁面。

如果必须做自動跳轉,至少保證三点:不跳轉到與目前 URL 語言明顯冲突的版本;保留一個可被直接訪問、不做跳轉的入口頁;不要用 JavaScript 在渲染完成之後才跳。

canonical 與 Sitemap 要跟着一起改

語言版本不属于重复内容,所以通常不應该把英文頁的 canonical 指向中文頁。canonical 表達的是“這是同一份内容”,hreflang 表達的是“這是同一份内容的不同語言版本”,两者混用會让信号自相矛盾。

Sitemap 方面,可以每種語言各出一份,並在其中标注對應的 hreflang;也可以合並成一份,但要保證列出的 URL 都能正常訪問、不被跳轉。

一份可以照着走的自查顺序

  1. 列出所有語言與地区版本的實际 URL,確認每種只對應一套地址。
  2. 抽查三到五個頁面,检查 hreflang 是否双向、是否自引用、代碼是否規范。
  3. 用不同地区的 IP 或 UA 訪問同一個 URL,观察是否被静默跳轉。
  4. 核對 canonical,確認没有跨語言指向。
  5. 检查 Sitemap 與 robots.txt,是否放行了全部語言版本。
  6. 過一段時間再看抓取日誌,確認各語言版本的抓取比例是否合理。

几件不建议在語言版本上做的事

  • 用同一個 URL 加參數切換語言,而參數並不真正影响頁面内容。
  • 把机翻内容直接铺成几十個語言版本,正文几乎一致,只有語言不同。
  • 語言版本上线後長期不更新,只留下一個空目錄。
  • 借助蜘蛛池或其他方式强推某個語言版本的 URL,却没有對應内容與内鏈支撑。

多語言站点的核心不是“多”,而是關系清晰。让每個版本的 URL 唯一、声明完整、能被直接訪問,蜘蛛才有可能把正确的頁面分發给正确的用戶。把這些基础做完,再去分析抓取日誌和 URL 發現情况,才是有意义的優化。