站点运营

站点运营:多語言與 hreflang 自查,別让語言版本互相抢入口

多語言站点里,hreflang 寫错往往不會立刻报错,却會让蜘蛛在不同語言版本之間反复试探,甚至把對應版本当成重复内容。本文從語言版本的 URL 组织方式讲起,整理 hreflang 的双向指向、x-default、canonical 與 Sitemap 配合等自查要点,並给出一份可以照着做的检查清單。

站点运营

站点运营:多語言與 hreflang 自查,別让語言版本互相抢入口

做多語言站点最容易出現两種情况:一種是各語言版本各寫各的,蜘蛛在两個版本之間来回跳;另一種是干脆没做标记,蜘蛛把英文頁当成中文頁的重复内容。hreflang 解决的是“同一内容、不同語言或地区”之間的對應關系,但它不是寫上就灵的配置,需要像检查内鏈一样定期自查。

先確認語言版本是怎么组织的

常见有三種:子目錄(example.com/en/)、子域名(en.example.com)、獨立域名(example.com 與 example.co.uk)。三種都能用,重点是保持统一,不要一半用子目錄一半用子域名,否則日誌、證书、驗證文件的归属都會變得混乱。

從抓取路径和權重集中角度看,子目錄通常最容易管理:同一域名下的 hreflang、Sitemap、canonical 都在一套体系里,蜘蛛顺着一條路径就能走完所有版本。子域名和獨立域名則需要額外確認站点驗證、證书覆盖和抓取統計是否分別到位。

hreflang 的三條基本規則

  • 必须双向返回:A 頁指向 B 頁,B 頁也要指回 A 頁。單向指向经常會被忽略,等于白寫。
  • 語言與地区分開寫:zh-Hans、zh-Hant、en、en-US 是不同含义,別把語言碼当地区碼用,也別用國家碼代替語言碼。
  • 加一個 x-default:用于没有匹配語言时的兜底頁,通常是語言選擇頁或預設語言首頁。
自查时不要只看“有没有寫”,要確認每條指向的 URL 都能正常打開、狀態碼是 200,並且指向的确實是同一篇内容的對應版本。指向 301、404 或另一篇文章的标簽,會直接干扰判断。

一份可以照着做的自查清單

  1. 列出所有語言版本,标注 URL 形式、預設語言和兜底頁。
  2. 抽查 10~20 篇文章,逐個確認相互指向是否完整,以及是否包含指向自身的标簽。
  3. 检查是否有指向已下线、已改版頁面的舊标簽,及时更新或刪除。
  4. 確認 canonical 指向本語言版本自身,而不是统一指向預設語言頁。
  5. 對照 Sitemap,確認地图包含各語言版本,且 alternates 與頁面上的标记一致。

和 canonical、Sitemap 的關系

hreflang 不是 canonical 的替代品。canonical 回答“哪個是這一語言版本的正本”,hreflang 回答“哪些頁面是它的其他語言版本”。如果一個英文頁的 canonical 指到中文頁,等于告诉蜘蛛忽略英文頁,hreflang 寫得再全也难起作用。反過来,如果每個語言版本都獨立自指,再把 hreflang 补全,结构就清楚得多。

抓取路径上的常见坑

  • 語言切換靠 JS 下拉框,切換後 URL 不變,蜘蛛只能看到預設語言。
  • hreflang 只寫在首頁,内頁完全没有标记,對應關系断在半路。
  • 同一語言存在多個 URL(带參數、大小寫不同),标簽指向混乱。
  • 地区判断靠 Cookie 或 IP,導致同一個 URL 返回不同語言的内容。

建议每季度做一次抽查,新增語言或改版之後再加一次。多語言站点的 URL 發現本来就比單語言复杂,把對應關系理顺,蜘蛛才能把每個版本当成獨立且明确的頁面来抓,而不是在一堆近似的 URL 之間反复打轉。