先把需求拆成两件事
多语言和多地区经常被混在一起讨论,但它们的目标并不一样。多语言解决的是“同一个产品,用不同语言写给不同读者看”;多地区解决的是“同一种语言,但因为市场、定价、库存或合规规则不同,需要给不同地区的用户看不同版本”。想清楚属于哪一种,结构选择才不会来回改。
如果只是想让英文用户和中文用户各看一版,主体内容一致、只有翻译差异,结构上通常越简单越好。如果是同一语言下要给不同国家做差异内容,就要考虑每个地区版本是否有独立的运营和维护能力,否则很容易做成一批没人打理的僵尸目录。
三种常见结构
- 子目录:example.com/en/、example.com/de/。所有版本共享同一个域名,外链与站点积累自然集中,维护成本最低,是大多数中小站点的默认选择。
- 子域名:en.example.com、de.example.com。在搜索引擎看来更接近独立站点,适合各语言团队独立运营、技术栈或 CDN 策略不同的情况,但主域积累的链接不会自动共享。
- 独立域名:example.de、example.co.jp。地区信号最明确,本地用户信任感通常更好,代价是每个站点都要单独运营、单独积累,成本最高。
选择时看几个现实条件
- 维护人力:每个语言或地区版本都需要有人持续更新,空壳版本比没有更糟。
- 内容差异度:各版本内容几乎一样、只是机器翻译时,集中在一个域名下更好管理。
- 技术约束:服务器、CDN、数据合规要求是否允许统一部署。
- 外链现状:某个地区已经有独立域名的历史积累,轻易合并要谨慎评估。
让蜘蛛看懂版本之间的关系
无论选哪种结构,都要让搜索引擎明确知道“这些页面是同一内容的多个语言或地区版本,而不是互相抄袭”。常用的手段是 hreflang 标注:
- 每个版本都列出全部版本,包括自己(自引用),形成互相指向的闭环。
- 语言用 ISO 639-1 两位码,地区用 ISO 3166-1 Alpha 2,例如 zh-CN、en-US、pt-BR。
- 用 x-default 指向默认版本,通常是语言选择页或主语言版本。
- 标注可以放在 HTML 头部,也可通过 HTTP 头或站点地图下发;指向的地址要能正常访问,不要指向 404 或跳转目标。
hreflang 只是提示,不是收录保证。标注写对了,页面本身内容单薄或长期没有外部链接,也不会有好的表现。
抓取层面容易踩的坑
- 靠 JS 跳转或 Cookie 自动切换语言:蜘蛛通常没有 Cookie,也不一定执行脚本,可能永远只抓到默认版本。切换入口用可点击的普通链接更稳妥。
- 不同版本共用同一个 URL、靠参数区分:参数版本容易被当成重复内容,互相标注也很难写清楚。
- 只翻译导航和标题:正文仍是原文,属于典型的低质多语言页,容易被判定为薄内容。
- 各版本互相 canonical 到同一语言:会直接抹掉其他版本的独立价值,一般不该这么做。
- 站点地图没有分语言分组:按语言给 sitemap 分组有助于蜘蛛理解版本关系,但同样只是辅助,不能替代页面本身的质量。
上线后的检查清单
- 每个版本能否在不带 Cookie、不执行脚本的情况下直接访问。
- hreflang 是否双向、无死链、无遗漏,语言与地区代码是否规范。
- 各版本的标题、描述、正文是否真的做了本地化,而不是复制粘贴。
- 日志里观察蜘蛛对各版本的抓取频次是否合理,某个版本长期零抓取就要排查原因。
- 语言切换入口在移动端是否可点、是否容易被误触。
结构没有绝对优劣,关键是一旦定下来就别频繁改动。确实需要调整时,按改版流程先做 URL 映射和跳转方案,再动手迁移。