站点做了多語言之後,常见的情况是:英文版收錄得七七八八,日文版一個都没有;或者几個語言版本在索引里互相替代,搜品牌词出来的是你没打算主推的那個版本。這類問题很多时候不是“蜘蛛不来”,而是版本口径没分清、重复内容没有收口。
先分清語言版本和地区版本
這两件事经常被混在一起说,但處理逻辑不一样。
- 語言版本:同一站点面向不同語言用戶,例如 /en/、/ja/、/de/。正文内容本身不同,重复度通常可控。
- 地区版本:同一語言面向不同市场,例如 /us/、/uk/、/au/。正文可能高度重合,差异集中在货幣、库存、配送、價格上。
地区版本更容易出問题,因為它的内容相似度天然就高。如果只是換了货幣符号,其余正文一模一样,搜尋引擎没有理由保留多個版本。
收錄口径要按版本拆開看
用整站收錄數判断多語言站点,几乎一定會誤判。英文目錄涨了两千條,會把日文目錄一條没收錄的事實盖住。
更有效的做法是按目錄或子域分別統計:每個版本有多少可收錄 URL、被抓取了多少、進入了索引多少、索引里有多少是备用頁面。這几個數字放在一起對比,問题往往一眼能看出来——是没被發現,還是發現了没抓,還是抓了没留。
hreflang 不负责收錄,只负责指向
hreflang 的作用是告诉搜尋引擎:這几個頁面是同一内容的不同語言或地区版本,它們是同一组,而不是互相竞争的關系。它不能把頁面“推進索引”,也不能替代 canonical。
缺了 hreflang 的直接後果,通常是搜尋引擎自己挑一個版本保留,或者几個版本在索引里来回替換。挑错版本的时候,用戶看到的是不合适的語言或地区。
配置上有三点容易漏:一是必须自指,也就是頁面要指向自己;二是必须双向,A 指向 B,B 也要指向 A;三是語言代碼用規范寫法,別用自造的地区缩寫。
重复内容通常来自這几種情况
- 机翻或半自動翻译,正文几乎一致,只有導航和頁脚不同。
- 模板相同,正文只有一两句差异,其余全靠模块拼。
- 篩選參數、排序參數、會话參數在每個語言版本下又複製了一份。
- 預設語言版本被多個路径指向,例如根目錄和 /en/ 同时可訪問同一内容。
處理顺序
顺序比技巧重要,先做错的一步會让後面白做。
- 確認每個版本是否有獨立内容價值。如果只是机翻且無人维護,考虑合並到主版本,或用 noindex 明确排除,而不是硬留着。
- 让每個版本 canonical 自指。最常见的事故是子語言頁面的 canonical 指向了預設語言,等于自己声明“請收錄另一個頁面”。
- 配齐 hreflang 集群。包含自指、双向指向和 x-default,且只指向可索引的 URL,不要指向跳轉頁或带參數的地址。
- 检查語言切換連結是否可被爬取。很多站点用 JS 事件切換語言,蜘蛛顺着連結走不到其他版本,這是多語言收錄卡住的高频原因。改成常規的 a href 指向對應 URL。
- 分版本维護 sitemap。每個語言或地区目錄一份,便于分別观察提交與收錄的變化。
- 分版本观察,而不是看總數。给每個版本單獨建一個观察口径,判断周期也各自獨立。
一份可执行的自查清單
- 語言切換是真實的連結,還是只在点击时执行脚本?
- hreflang 是否自指、是否双向、語言代碼是否規范?
- canonical 是否指向自身,而不是預設語言版本?
- 預設語言是否被參數或 cookie 重定向挡住,蜘蛛拿不到?
- 地区版本之間的差异是否只是货幣符号?
- 各版本的 sitemap 是否分開,收錄資料是否分開統計?
多語言站点的收錄問题,多數不是抓取能力問题,而是“你希望搜尋引擎保留哪個版本”這件事没有想清楚。想清楚了,後面的 canonical、hreflang 和 sitemap 都只是执行動作。
落地时建议從体量最大的那個非預設語言開始试点,改完一個版本观察一段時間,確認口径和收錄變化符合预期,再複製到其余版本。一次性全站改動,出問题时很难定位是哪一步引起的。