先分清:被收錄的是哪個版本
多語言站点遇到的困惑,往往不是“頁面没被收錄”,而是收錄归属跑到了別處:德语頁出現在英语结果里,地区版本被主語言版本替代,或者同一份内容的两個語言版本都留在索引里互相竞争。索引里最终保留的通常是站点信号最一致、最明确的那一個 URL。所以核對的重点不是“收没收”,而是“哪個 URL 拿到了這次收錄”。
三種常见的归属冲突
1. 漏掉自指 hreflang
每個語言版本都應当在頁面上指回自己,包括自己那一行。不少站点只寫了“其他語言版本”,唯獨漏掉自指。這样机器收到的語言集合是不完整的,归属判断就容易交给別的信号,比如 canonical 或者内鏈指向的版本。
2. hreflang 與 canonical 指向不同
語言版本 A 的 hreflang 表示“我是德语版”,但它的 canonical 却指向英语版。两個信号方向相反,最终哪個生效並不由頁面自己决定。比較稳妥的做法是:canonical 自指到目前語言版本,語言關系交给 hreflang 去表達。除非這個語言版本本身就是另一種語言的翻译替身,否則不要让 canonical 跨語言。
3. 缺少 x-default
当用戶語言不匹配任何一個已声明版本,或者站点有語言選擇頁时,x-default 用来指定兜底版本。缺了它,机器只能從現有版本里挑一個,挑中的未必是你希望的入口頁。
按顺序核對
- 先看每個語言版本是否自指。逐頁確認 hreflang 列表里包含自己那條,且代碼、地区寫法與 URL 對得上。
- 再看是否互相回指。德语頁列出英语頁,英语頁也要列出德语頁。單向声明等于半截信号。
- 检查 x-default 是否落在合适的入口上。通常是語言選擇頁或主語言首頁。
- 確認 canonical 與 hreflang 不冲突。两個信号指向同一個 URL 时才算對齐。
- 核對内鏈與站点地图。導航、面包屑和 sitemap 是否也只指向對應語言版本,而不是全部甩给主語言頁。
- 最後看抓取與收錄狀態。如果某個語言版本長期只被“已發現”,先回到前面几步,而不是急着提交 URL。
容易被忽略的两類信号
- 站内搜尋與篩選參數。带語言參數的组合頁可能被当成獨立版本,反而稀释了真正的語言版本。
- 站点地图分文件。語言版本越多,越容易在 sitemap 里漏掉某一個地区,或者把舊的語言前缀 URL 一起提交進去。
自動跳轉要谨慎
按 IP 或浏览器語言自動跳轉,看似贴心,却常常让抓取端只能看到一個版本:蜘蛛從某個地区訪問时被跳到主語言頁,其他語言版本就失去了被抓取的机會。更稳妥的是把跳轉做成用戶可撤销的提示,或者只在用戶主動選擇後记住偏好,而不是在首次請求时就强制改寫路径。
归属問题的排查顺序和收錄問题一样:先在頁面层面把信号對齐,再看站点层面是否一致,最後才去看抓取和索引狀態。顺序反了,容易在错誤的方向上反复提交。
語言结构切換之後
如果站点刚把語言结构從參數改成子目錄,或從子域名改到子目錄,舊 URL 的收錄归属不會立刻消失。這时需要让舊地址以 301 指向對應的新語言版本,同时更新内鏈和站点地图,並给自己留出观察周期。期間看到舊版本仍偶尔出現,属于正常過渡,不必急于反复調整信号。
整件事的核心其實很简單:每個語言版本都清楚地說明自己是谁、和谁對應、谁是兜底,剩下的交给抓取和索引去處理。信号一致,归属才稳定。