站点运营

站点运营:多語言與地区版本自查,別让蜘蛛在两套頁面之間来回切換

面向不同語言或地区的站点,常常在語言切換、hreflang 标注和 canonical 之間埋下冲突:蜘蛛從 A 語言被自動彈到 B 語言,或者两套頁面互相被当成重复内容。本文给出一份可执行的自查顺序,從版本清單、标注回鏈、x-default 到跳轉與缓存,逐項確認後再上线改動。

站点运营

站点运营:多語言與地区版本自查,別让蜘蛛在两套頁面之間来回切換

当站点面向不同語言或不同地区的用戶提供不同頁面时,搜尋引擎需要知道這些頁面是同一主题的“兄弟版本”,而不是互相抄袭的重复内容。hreflang 标注就是用来表達這层關系的。它本身不會提升排名,但能减少蜘蛛把不同語言頁面判為重复版本的概率,也能让用戶看到更贴合自己語言习惯的頁面。這項工作更适合在栏目改版、新增语種之前做一次系統自查。

先分清語言版本和地区版本

語言和地区是两個维度。只按語言区分时,用 zh、en、es 這類代碼即可;同时区分地区时,寫成 zh-Hans、en-US、pt-BR 這類组合。常见問题是把两者混着用:一部分頁面标 en,另一部分标 en-US,還有的寫 EN_us,大小寫和连接符不统一,机器讀起来就是几套不同的标注。整理清單时,建议每個 URL 只對應一個語言地区组合,並把代碼统一成規范寫法。

版本清單是自查的起点

不要直接在模板里改标簽,先把現有版本列成一張表,再對照检查。

  • 每個語言或地区版本的完整 URL,是否唯一、是否可訪問。
  • 该 URL 是否參與 hreflang 标注,還是只在導航里出現。
  • 是否只有部分栏目做了多語言,另一部分仍是單語言。
  • 是否有“空版本”:頁面存在但正文几乎與預設語言相同。

清單拉出来後,很多冲突會自己浮現出来,比如某個语種只有首頁和列表頁,詳情頁直接回落到預設語言版本。

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

不少站点用浏览器語言或 IP 做强制跳轉:蜘蛛以預設語言抓取 A 頁面,服務器返回 302 把它带到 B 頁面,结果 B 頁面被反复抓取,A 頁面長期得不到更新。更稳妥的做法是保留各語言版本的直接入口,把選擇權放在頁面内的切換連結或選擇頁上,而不是在入口處一刀切。

判断标准很简單:關掉浏览器語言偏好、清空 Cookie 之後,能不能直接打開每一個語言版本的首頁和栏目标题頁。如果打不開,蜘蛛多半也打不開。

标注本身要查的几處细节

  • 回鏈:每個版本都要列出全部版本,包括自己。只寫單向指向的做法,容易被忽略。
  • 绝對地址:带协议和主机名,避免相對路径在分站或子目錄下解析错誤。
  • x-default:為没有匹配到具体語言的用戶准备一個預設版本或語言選擇頁,通常是主語言版本。
  • 與 canonical 的關系:canonical 一般指向本語言版本自己,不要跨語言指向預設語言,否則等于告诉蜘蛛其他語言版本都该合並過去。
  • 目标可用性:标注指向的 URL 不能是 404、重定向终点,也不能被 robots 規則或 noindex 挡住。

内容重复與 CDN 缓存

如果两個版本只是货幣符号或少量文案不同,正文结构完全一致,可以考虑合並為一個版本,用地区選擇或參數表達差异。多出来的薄版本會稀释抓取预算,也會让 hreflang 标注失去意义。另一個隐蔽問题是 CDN 缓存:按 URL 缓存时没带上 Vary 或語言维度,返回给英文爬虫的可能是中文頁面缓存。自查时可以用不同語言头請求同一 URL,比對返回内容是否随語言變化。

上线後的观察方式

改完标注不等于結束。可以定期從服務器日誌中篩選各語言目錄,看蜘蛛是否在稳定抓取每個版本,還是長期只抓預設版本。同时检查搜尋後台的國际定位或語言报告,確認标注被识別。每次調整只改一類問题,观察一段時間再動下一處,避免同时改動跳轉、canonical 和 hreflang 後無法判断是哪一步起了作用。