索引不會為每種語言各留一份
多語言站点常见的誤解是:每個語言版本都是獨立頁面,所以都會被收錄。實际情况是,索引空間是有限的,当同一份内容以多種語言或地区形式出現时,系統會尝试挑出一個主版本,其余的可能被归為备用版本。备用版本不算被惩罚,但它很难在非對應語言的查询里露脸。
所以多語言站的收錄問题,往往不是“為什么没收錄”,而是“為什么收的不是我想让用戶看到的那一版”。
自動跳轉是第一道坎
很多站点用服務器端做語言识別:根據 IP、浏览器語言或 Accept-Language 头,把用戶 302 到對應的語言版本。這種做法對用戶体驗可能友好,但對抓取不友好。
抓取工具通常從預設地址或某個入口進来,如果它在第一步就被重定向走,那么原始語言的頁面可能長期不被抓取,索引里只剩下被跳轉到的那個版本。
如果必须做語言跳轉,優先考虑在頁面内用可见連結让用戶切換,而不是在服務器层面强制重定向。
hreflang 是提示,不是收錄開關
hreflang 用来告诉搜尋引擎“這几個 URL 是同一内容的不同語言或地区版本”,帮助它在正确的語言查询里展示正确的版本。它本身不會让頁面被收錄,也不會阻止頁面被收錄。常见错誤有:
- 只有單向引用,A 頁面寫了指向 B,B 頁面却没有指回 A。互相引用才能形成有效的關系。
- 缺少自引用,頁面没有把自己也寫進 hreflang 列表。
- hreflang 指向的 URL 返回 404,或重定向到另一個地址,關系断掉。
- canonical 指向語言總頁,同时 hreflang 又指向具体語言頁,两個信号互相冲突。
規范标记應该指向自己
每個語言版本都是獨立、完整的頁面,canonical 應该指向自身,而不是统一指向某個主語言頁面。把各語言版本都 canonical 到中文版,等于告诉搜尋引擎“別收其他語言版本”,那么英文、日文頁面的收錄就會出問题。
只有在内容确實高度雷同、只是货幣或單位差异、且你不指望它單獨被检索时,才考虑收敛到一個規范地址。
机器翻译堆量會稀释整站质量
為了覆盖更多語言而批量套用翻译接口,得到的往往是语义生硬、術语不统一的頁面。這類頁面即使被抓取,也容易停在“已抓取,尚未编入索引”的狀態——抓取成功了,但没有進入索引。
更麻烦的是,大量低质量的翻译頁面會占用抓取预算,让真正重要的語言版本被挤到後面。
自查顺序
- 確認每個語言版本都有獨立的、可直接訪問的 URL,不依赖 JavaScript 才顯示正文。
- 检查是否存在基于 IP 或浏览器語言的强制跳轉,先把它改成可選的切換入口。
- 確認 hreflang 互相引用完整,包含自引用,且目标 URL 能正常返回 200。
- 检查每版的 canonical 是否指向自身。
- 查看索引覆盖率报告,区分“已收錄”和“备用網頁”两類狀態,看哪些語言版本被归到了备用。
- 對内容雷同的語言版本,决定是保留、合並還是加厚内容,而不是放任不管。
關于“备用網頁”這個狀態
索引报告里出現“备用網頁(有适当的規范标簽)”並不一定是坏事。它說明系統识別出了這一頁和另一頁内容相近,並且選擇了一個主版本。你需要判断的是:這個主版本是不是你希望被检索的那個。如果不是,回到 hreflang 和 canonical 的設定上找原因,而不是急着提交重抓。
調整完标记後,给系統留出重新评估的時間。索引選擇是抓取、内容比對和质量评估共同作用的结果,改一個标簽不會立刻改變结论。