多語言站点做收錄,麻烦往往不在“收不到”,而在“收得不對”:同一批内容有好几個語言版本,搜尋结果里出現的可能是英文版,也可能是机器翻译版,甚至几個版本互相顶替,最後每個語言市场都拿不到稳定的展現。這類問题多半不是抓取出了故障,而是版本之間的信号没有理顺。
先確認一件事:每個語言版本都是獨立頁面
只要 URL 不同,搜尋引擎就当成不同頁面處理。它們各自需要有自己的标题、正文、内鏈和入口,不能只靠一套頁面加切換語言按钮動態渲染。如果切換語言後 URL 不變、内容靠 JS 或 cookie 變化,蜘蛛通常只會看到一個預設版本,其他語言的内容既没有獨立地址,也谈不上被單獨索引。
所以第一步很朴素:每種語言、每個地区對應的内容,是否有可直達、可被抓取的獨立 URL。
URL 结构:子目錄、子域名、獨立域名
三種常见做法都可用,差別在于信号的清晰度和维護成本:
- 子目錄(example.com/de/):權重集中在同一域名,配置和統計最简單,中小站点首選。
- 子域名(de.example.com):拆得比較干净,但需要額外的站点級驗證與配置,容易漏掉某几個版本的 sitemap 和 hreflang。
- 獨立域名(example.de):本地化观感强,但要單獨维護收錄與索引狀態,成本最高。
無论選哪種,保持同一站点内的一致性。混合使用,比如一部分語言放子目錄、一部分放獨立域名,會让版本關系更难表達,也让後續排查變得零碎。
hreflang 最容易出错的几個地方
hreflang 的作用是說明“同一内容的不同語言或地区版本是這几條 URL”,它不是排名工具,只是關系声明。常见错誤有:
- 單向标注:德语頁面指向英语頁面,英语頁面没有回指。這種不對称關系容易被忽略,等于只声明了一半。
- 指向打不開的 URL:版本下线後 hreflang 没同步更新,指向 404 或重定向。
- 指向被 noindex 或 canonical 收口的頁面:一邊说“這是某個語言的正式版本”,一邊又告诉搜尋引擎別索引它,信号自相矛盾。
- 語言與地区代碼寫错或混用,把 zh-CN 和 zh-TW 当成一回事,或者只寫語言不寫地区。
- 靠 JS 注入:爬取阶段不一定执行,容易漏讀。放在 HTML 头部或 XML sitemap 里更稳。
另外,x-default 用来指定没有匹配到具体語言时展示哪一版,通常给語言選擇頁或國际版,不要随手指到一個随机版本上。
canonical 不要跨語言使用
有人為了“集中權重”,把法语頁面 canonical 到英语頁面,结果法语版本從索引里消失,法语用戶搜到的全是英文頁面。只有当两個 URL 是同一種語言、同一份内容时,canonical 才是合适的收口手段。跨語言的近似内容,應该用 hreflang 表達版本關系,而不是互相 canonical。
机器翻译頁面要不要放出去
自動翻译的頁面能不能被索引,關键不在“是不是机器翻的”,而在质量:術语是否一致、導航和按钮有没有翻漏、頁面是否只是把原文換了一遍词。大量低质量翻译頁被放出去,常见後果是這些頁面進了索引却没什么展現,或者同一個語言下出現多個近似版本,彼此消耗。
比較稳妥的做法是分批放出:先放核心栏目和轉化路径,观察這些頁面的抓取與展現,再决定要不要铺到全站。质量不過關的版本,宁可先 noindex 收着。
自查顺序
- 每個語言版本是否有獨立、可直達、返回 200 的 URL。
- hreflang 是否双向對称、目标可訪問、且没有被 noindex。
- canonical 是否只在同語言内部使用。
- 各語言版本的 sitemap 是否都提交,且只包含對應語言的 URL。
- 抽查几個語言站内搜尋或 site 查询的结果,看返回的是不是该語言版本。
多語言收錄的目标不是让每個版本都被收錄,而是让每個語言市场搜到的,是對應語言的那個版本。