语言切换器的 SEO:菜单怎么做才不挡爬虫、不破坏 hreflang

语言切换器的正解是「一组爬虫读得到的纯文字 <a> 链接」,指向各语言版的绝对网址,且不强制按 IP 自动跳转。 如果你的切换器是 JavaScript 下拉、onchange 导航或按访客 IP 自动改语言,Googlebot 与 AI 爬虫很可能根本看不到其他语言版本,导致那些页面收录不全、hreflang 回链断裂、简繁互相蚕食——整套多语言架构等于白做。

为什么切换器的实现方式会决定其他语言版能不能被收录?

爬虫发现多语言页面有两条路:一条是 hreflang 标注,另一条就是页面上实际的内部链接。这两条路最好互相印证。问题在于,很多切换器把「链到其他语言版」这件事藏进了爬虫读不到的地方:

只要其他语言版没有一条可爬的链接进入,Google 对那组页面的信心就低,hreflang 的双向回链也可能被判定不完整而被整组忽略。

三种语言切换器做法对比

做法 爬虫读得到其他语言版? 对 hreflang 的影响 主要风险 建议
纯文字 <a href> 链接(每个语言一个绝对网址) 是,直接可爬 与 hreflang 互相印证,最稳 几乎无 ✅ 正解
JS 下拉/onchange 导航 不一定(靠 JS 渲染,AI 爬虫多半读不到) 内部链接信号缺失,回链可能不完整 其他语言版收录不全 ⚠️ 需退化为可爬链接
按 IP 强制自动跳转 否(Googlebot 用美国 IP,只看得到一个版本) 其他语言目录几乎不被抓取 大量页面等于隐形 ❌ 避免
Cookie/Accept-Language 自动改内容 否(同 URL 返回不同内容) 信号混乱 触及 cloaking 灰线 ❌ 避免

结论很直接:能不能被收录,取决于切换器有没有留下一条「不需执行 JS、不需特定 IP」就能跟随的链接。 动画、下拉 UI 都可以保留,但底层一定要是真的 <a href>

正确实现:五个步骤

  1. 每个语言选项都是真的 <a href>:切换器展开后,每一个语言都对应一个 <a href="https://example.com/zh-hans/pricing/">简体中文</a> 这样的绝对网址。要炫的下拉动画没问题,但 DOM 里必须存在这些链接,而非只在点击时才由 JS 生成。
  2. 链到「对应页」而非一律回首页:在定价页点击英文,应该去英文版定价页 /en/pricing/,不是 /en/ 首页。一律导回首页会流失场景,也让内部链接对不上 hreflang。
  3. 与 hreflang 一一映射:切换器列出的语言集合,要和该页 hreflang 标注的语言集合完全一致(含自引用与 x-default)。切换器有简体、hreflang 却没有,两边信号打架。
  4. 不要强制 IP 自动跳转:可以在检测到疑似语言不符时,用一条可关闭的横幅「建议切换到简体中文?」,但默认仍停在用户请求的 URL,把选择权交回用户与爬虫。
  5. 加上 hreflanglang 属性辅助:切换器链接可加 hreflang="zh-Hans",并确保页面 <html lang="…"> 正确;这对无障碍与爬虫解读都有帮助(但它辅助、不取代 <head> 里的 hreflang 标注)。

验证:怎么确认切换器没挡到爬虫?

常见问题(FAQ)

Q1:语言切换器一定要放在每一页吗? 建议是。切换器本身就是一组全站性的多语言内部链接,放在共用的页头或页脚,能让爬虫从任一页都发现其他语言版,强化 hreflang 的回链。只放在首页,长尾内页的其他语言版就少了一条被发现的路。

Q2:用 JavaScript 下拉菜单一定不行吗? 不是「不能用 JS」,而是「不能只有 JS」。下拉 UI 可以保留,关键是底层 DOM 要有真正的 <a href>,让不执行 JS 的爬虫也能跟随。纯靠 onchange 事件跳转、DOM 里没有链接的做法才是问题。

Q3:检测到访客语言后自动跳转,Google 会怎么看? Google 官方不建议按 IP 或浏览器语言强制自动跳转,因为 Googlebot 多从美国、以默认语言抓取,会被锁在单一版本,导致其他语言收录不全。正解是给出可关闭的「建议切换」提示,而非强制跳转。

Q4:切换器要不要对每个语言链接加 hreflang 属性? 可以加,但它是辅助。链接上的 hreflang="zh-Hans" 有助爬虫与无障碍解读,却不能取代 <head> 或 sitemap 里那组正式、双向回链的 hreflang 标注。两者搭配、集合一致才完整。

Q5:切换器该链到对应页还是首页? 链到对应页。在文章 A 点击另一语言,就去该文章 A 的对应语言版;找不到对应页时才退回语言首页。一律导回首页会流失用户场景,也让内部链接与 hreflang 映射不上。


把切换器做成可爬的文字链接,只是多语言架构的一环;真正决定简繁会不会互抢排名的是底层的 hreflang 标注是否正确。想确认你的标签有没有漏回链、漏自引用,可用 GeoSeoToday 的 hreflang 生成器与 GEO 检测工具。基础观念请先读〈hreflang 是什么?多语言站必备教程〉,整体策略见支柱页〈多语言/国际 SEO 完整指南:hreflang、架构与本地化〉。