多语言或多地区站点的 URL 总数,通常是单语言站点的数倍。但对搜索蜘蛛来说,这些页面不会自动进入队列:它要从某个入口出发,沿着可抓取的链接一层层走到另一个语言版本。语言版本之间如果缺少链接路径,内容即便早就上线,也可能长时间处在“未被发现”的状态。
蜘蛛发现语言版本 URL 的几条路径
- 语言切换器:用普通 a 标签指向各语言对应页面时,这是最直接的发现通道。
- 导航与页脚:把各语言首页放进导航或页脚,能保证站内大多数页面都有机会把蜘蛛带到其他语言版本。
- Sitemap:按语言分片提交,或在一个 sitemap 中列出全部语言 URL,发现效率通常更高。
- hreflang 标注:它是帮助搜索引擎理解语言与地区对应关系的信号,并不等于发现通道;标注正确,能让蜘蛛更快理解这些 URL 属于同一组。
语言切换器常见的三个坑
切换器靠脚本渲染
如果切换器是点击后由 JavaScript 生成链接,或者整个下拉菜单由前端框架渲染,蜘蛛在没有执行脚本的情况下就拿不到这些 URL。稳妥的做法是在 HTML 里保留一份可抓取的链接,哪怕样式上不显示。
依赖 cookie 或 IP 自动跳转
按用户语言自动 302 到目标版本,对普通访客体验不错,但蜘蛛访问时往往没有 cookie,看到的可能只是默认语言页面,各语言版本之间的发现路径就这样断开了。更稳的方式是保留一个可抓取的静态入口,把跳转限制在用户主动选择之后。
切换器只指向语言首页
如果切换链接统一指向各语言首页,蜘蛛能发现语言首页,但进入某个具体内容页后,往往找不到对应的翻译版本。理想状态是内容页之间也有对应链接,或者通过 hreflang 与 sitemap 把对应关系补全。
路径形式对抓取的影响
- 子目录(/en/…):与主站共享域名,路径结构清晰,通常最容易维护。
- 子域名(en.example.com):需要单独验证与提交 sitemap,更容易被当成独立站点看待。
- 参数(?lang=en):容易被多个参数组合污染,需要配合 canonical 与 robots 规则收敛路径。
三种方式都能被抓取,差别更多在于维护成本和后续路径收敛的难度,而不是“哪种写法蜘蛛一定更喜欢”。
容易引发重复内容的细节
多语言站点常见的问题不是抓不到,而是同一份内容被当成多个 URL 处理。比如 canonical 全部指向默认语言版本、hreflang 互指时写错地址、语言版本之间内容高度相似。这些情况不一定直接导致页面不被抓取,但会让蜘蛛在这组 URL 之间反复判断,抓取节奏和后续表现都容易变得不稳定。
上线后的自查清单
- 关闭脚本执行的情况下,能否从首页走到每个语言版本?
- 语言切换链接是否指向当前页面的对应翻译,而不是统一指向首页?
- hreflang 是否成对互指,且没有指向 404 或重定向地址?
- 各语言 sitemap 是否已提交,lastmod 是否与真实更新时间一致?
- 自动跳转是否会影响蜘蛛获取默认语言之外的页面?
多语言站点的 URL 发现,本质上还是“有没有可抓取的链接”。hreflang 能帮助蜘蛛理解页面之间的关系,但真正把蜘蛛带过去的,通常是切换器、导航和 sitemap 里那几条实实在在的链接。