多語言站点的收錄問题往往不是“没收錄”,而是“收錄的版本不對”:德语頁在索引里被英文頁顶掉,日语頁搜不到,索引里出現一個從没见過的語言标题。遇到這種情况,先別急着改模板,第一步是把每個語言版本由哪個地址代表弄清楚。
先把三件事分開:hreflang、canonical、索引條目
- hreflang 是给搜尋引擎的語言與地区提示,不保證一定被采纳,它本身不决定谁能進索引。
- canonical 是收敛信号,用来指定同一组内容里哪個地址是代表。如果它和 hreflang 打架,收錄结果就會飘。
- 索引條目按地址建立,但展示时可能按聚類選擇其中一個版本。看到英文标题出現在德语 URL 下,先確認是聚類造成的展示替換,還是地址本身出了問题。
逐語言版本的核對顺序
- 整理一份 URL 清單:每種語言、每個地区分別對應哪些地址,尤其注意 /en/ 與 /en-us/ 這類是否同时存在。
- 检查每個頁面的 canonical 是否指向自己。多語言常见错誤是所有語言版本都 canonical 到英文版,结果其他語言被合並掉。
- 检查 hreflang 是否閉环:A 指向 B,B 也必须指回 A,並且统一使用绝對地址。
- 检查語言代碼寫法是否規范:en、en-US、zh-Hans 這類常規形式,避免下划线寫法或自造代碼。
- 看蜘蛛實际抓了哪些版本。日誌里只出現一個語言版本,說明入口或自動跳轉把其他版本挡住了。
- 確認内容是否真的做了本地化。只翻译導航、正文几乎一样,被当作重复内容的概率會明顯上升。
最容易踩的几個坑
- hreflang 寫成相對路径,或者指向已经被重定向的舊地址。
- 用 cookie 或浏览器語言做自動跳轉,蜘蛛預設只拿到一個版本。
- 用參數区分語言,例如 ?lang=de,這類地址更容易被当成同一頁面的變体。
- 某個語言版本返回 404 或 5xx,但 hreflang 還挂在頁面上,形成断鏈信号。
索引里出現另一個語言的结果,怎么判断原因
先记錄三個信息:實际收錄的 URL、该 URL 的 canonical、以及頁面上声明的 hreflang。三者對齐,才說明問题不在信号层,而更可能出在内容相似度或抓取覆盖上。
聚類合並和 canonical 收敛是两個不同层次的動作:前者可能只是展示层替換了标题與摘要,後者會改變哪個地址被视為代表。核對时不要只看展示出来的語言就下结论。
核對清單
- 每個語言版本 canonical 自指,除非确實打算合並到某一個語言。
- hreflang 双向互指、使用绝對地址、指向返回 200 的最终地址。
- 語言切換尽量用普通連結,而不是依赖自動跳轉或 JavaScript 重定向。
- 保持 URL 稳定,改版时用 301 指到新地址,不要新舊並存。
- 如果内容确實無法本地化,明确保留一個版本,其他版本做好收敛。
多語言收錄核對的核心不是“让蜘蛛多来几次”,而是让每個語言版本都有清晰、唯一、可被發現的代表地址。信号一致之後再看索引覆盖报告,结论才有意义。索引變化需要時間,也不存在提交之後必然收錄的保證,按上面的顺序逐項核對即可。