站点运营

站点运营:多语言站点的URL发现,别让hreflang代替链接

多语言站点的抓取问题,往往不在翻译质量,而在于蜘蛛是否能顺着链接走到每个语言版本。本文从URL结构选择、hreflang 的双向要求、语言切换器的写法、常见跳转陷阱,到用日志验证抓取路径,梳理一套可落地的检查思路。

站点运营

站点运营:多语言站点的URL发现,别让hreflang代替链接

做多语言或多地区站点时,很多人把精力放在翻译质量和 hreflang 标签的写法上,却忽略了一个更基础的问题:搜索引擎的蜘蛛能不能顺着链接,自己走到每一个语言版本的页面上。hreflang 只是告诉搜索引擎“这几个页面是同一内容的语言变体”,它本身不是一条链接,也不会凭空创造抓取入口。如果站内链接结构没做好,标签写得再标准,也可能只是躺在那里。

一、先确定 URL 结构,再谈链接

多语言站点常见三种做法,各有取舍:

  • 子目录:example.com/en/、example.com/de/。所有语言共享同一域名,内链最容易互相打通,是多数中小站点的首选。
  • 子域名:en.example.com、de.example.com。适合团队、服务器或 CDN 配置差异较大的情况,但要额外维护子域之间的互链。
  • 独立域名或国别域名:example.de、example.co.jp。地区信号最强,代价是权重分散,且每个站点都要单独做一轮 URL 发现。

结构一旦确定,后续的链接、站点地图、日志分析都要围绕它展开。中途更换结构,等于把已经建立的抓取路径推倒重来。

二、hreflang 是注释,不是通道

最常见的误区是:只在首页写了一组 hreflang,就以为其他语言版本已经被“关联”上了。实际上,蜘蛛发现页面仍然依赖链接、站点地图和外部引用。一组 hreflang 要真正生效,通常需要满足两个条件:

  • 每个语言版本的页面上,都能看到指向自己和其他版本的双向标注;
  • 被标注的 URL 本身可抓取,返回正常状态码,不落在重定向链的错误终点,也不被 meta robots 或 robots.txt 拦截。

如果 A 页面标注了 B,而 B 页面没有任何回指,搜索引擎往往会忽略这组标注,这就是常见的“单向 hreflang”问题。

三、让每个语言版本都能被独立走到

  1. 语言切换器使用真实的 a 标签,href 指向对应语言版本的当前页面,而不是只用 JS 替换文案、或写入 cookie 后再跳转。
  2. 页脚保留静态的语言导航,覆盖全部语言,方便蜘蛛从任意页面抵达其他版本。
  3. 为每种语言单独提交站点地图,或在一个索引型站点地图中分文件列出,便于观察各语言的收录进度。
  4. 适度内容互链:同一主题在不同语言下都有独立文章时,可以在相关位置互指,但不必为了互链而堆砌无关链接。
  5. x-default 指向稳定的兜底页,通常是默认语言版本或语言选择页,且这个页面要能正常抓取。

四、几个容易被忽略的坑

  • 依据 IP 或浏览器语言自动跳转:用户和蜘蛛都可能被强制送到某一版本,导致其他语言版本长期没有访问。更稳妥的做法是给出提示,让用户自行选择。
  • 把语言做成 URL 参数:example.com/page?lang=en 这类写法会让 URL 数量膨胀,参数处理不当还容易造成重复内容。
  • 语言链接只在 JS 中生成:如果服务端返回的 HTML 里没有对应链接,蜘蛛就看不到这些入口。
  • 翻译未完成的占位页:大量机翻占位页或空页面如果被放出链接,会稀释整站质量,建议先不放出入口,或配合合适的状态码与 robots 规则处理。

五、用日志和抓取数据验证

结构调整完成后,不要只看后台的收录数字,更直接的判断方式是看服务器日志:

  1. 统计各语言目录或子域被访问的频次,看是否存在某个语言几乎没人抓。
  2. 检查蜘蛛请求的状态码分布,重点看 3xx 和 4xx 集中在哪些 URL 上。
  3. 观察切换器链接触发的抓取是否真正到达目标页,而不是停在跳转层。
  4. 对比站点地图提交的 URL 与日志中实际被抓取的 URL,找出长期未被访问的部分。

这些数据能说明链接通道是否通畅,比任何猜测都可靠。至于市面上各类蜘蛛池工具,它们可以在短时间内制造大量请求,但并不会帮你把站内结构理顺;抓取频次上去了,页面质量和可用性未必跟得上。

多语言站点的 URL 发现,本质是让每一条语言路径都真实存在、可达、可被观察。标签是补充说明,链接才是路。