多语言或分地区的站点,往往同一批内容存在多份 URL。对搜索蜘蛛来说,这不是一个页面,而是一组需要分别发现、分别抓取的地址。抓取路径是否清晰,直接决定蜘蛛能不能把各语言版本都走到,而不是只停在默认语言的那一份上。
三种常见结构,蜘蛛走法不同
多语言站点的 URL 组织方式大致有三种,抓取上的注意点也不同:
- 子目录(example.com/en/、example.com/de/):同一域名下,内链和 Sitemap 最容易统一管理,蜘蛛从首页就能顺着语言切换链接走到各个版本。
- 子域名(en.example.com):抓取和收录会按站点分别计算,子域之间的内链如果很弱,蜘蛛可能长时间只覆盖其中一个。
- 国别域名(example.de):地区信号明确,但各站点彼此独立,需要各自的 Sitemap、内链和服务器配置都到位。
hreflang 不是抓取指令
hreflang 的作用是告诉搜索引擎,这几个 URL 是同一内容的不同语言或地区版本,它不负责把蜘蛛引到某个页面。蜘蛛能不能发现这些 URL,仍然取决于它们是否出现在可抓取的 HTML 链接、Sitemap 或其他入口里。常见写法要求双向互指:A 页面标注 B,B 页面也要标注 A,并可用 x-default 指向默认版本。标注写错、指向 404 或指向重定向链,都会让这组关系失效,但不会直接阻止抓取。
被抓取不等于被当作独立版本收录
蜘蛛可能把几个语言版本都抓一遍,最终由搜索引擎判断哪一份作为该语言下的展示结果。如果页面自己声明了 canonical 却指向另一个语言版本,等于主动放弃这一份的独立性。多语言站点的 canonical 通常应指向自身,再用 hreflang 处理语言对应关系。
容易让蜘蛛只看到一份的几个做法
- 语言切换靠 JavaScript 或 Cookie 判断,默认 HTML 里只有一种语言,蜘蛛拿到的也是这一份。
- 切换器用 button 或 span 加事件,而不是真正的 a 标签链接。
- 按 IP 或 UA 直接 302 到对应语言首页,蜘蛛从不同来源看到不同跳转。
- 机器翻译版本批量生成,质量低且互相内链混乱,抓取预算被摊薄。
让路径更清楚的几个动作
- 每个语言版本都有独立、稳定、可直接访问的 URL,不依赖脚本跳转。
- 语言切换器使用真实的 a 标签,放在页头或页脚等每页都有的位置。
- 按语言拆分 Sitemap,或在 Sitemap 中一并标注语言对应关系。
- 检查服务器是否按 UA、IP 返回不同的 HTML;对蜘蛛应返回与用户一致的默认版本。
- robots.txt 不要误拦某个语言目录,改名或迁移时同步更新。
服务器与分发这一层
使用 CDN 或地区分发时,确认各语言版本在蜘蛛常用来源地都能正常返回 200,而不是被地区规则重定向或拦截。响应时间过长的版本,抓取频率往往会被压低,覆盖自然变慢。
怎么观察
把服务器日志按目录或子域分组,分别看各语言版本的抓取次数与状态码分布;对比 Sitemap 中提交的 URL 数量和实际被抓的数量。如果某个语言版本长期没有抓取记录,先回到内链和入口这一层检查,而不是急着调整 hreflang。
多语言站点的抓取问题,多数不是标注写得不对,而是某一版 URL 根本没有可被发现的入口。