多语言网站往往不是在检查过的地方出问题,而是在其他地方崩溃。翻译可能很出色,排版也可能完全一致,但在搜索结果中,各语言版本会开始互相竞争,甚至根本不被收录。下面按顺序介绍,包括只有在服务器日志中才能发现的错误。
1. 一个页面 — 一个URL,一种语言
语言版本必须拥有自己独立的地址。无论是文件夹(/uz/)还是子域名都可以 — 关键是地址固定且相互区分。
不应该做的事:根据浏览器标签设置在同一地址下显示不同语言。搜索引擎爬虫只用一种标签设置访问,只能看到一个版本 — 其余的对它来说等于不存在。
2. hreflang必须是双向的
每个版本都必须列出所有其他版本(包括自身)。如果俄语页面链接到乌兹别克语页面,而乌兹别克语页面却没有链接回俄语页面 — 这种链接不会被认可,两个页面会各自独立存在。
这需要在所有语言版本中检查,而不只是一种。单向链接是实施中最常见的错误。
3. x-default不是"默认使用英语"
x-default语言是为那些不符合已列出任何语言的人显示的页面。它既不是英语版本的同义词,也不是"主页"。最合理的做法是将访客引导至可以自行选择语言的地方,或引导至最完整的版本。
没有x-default网站不会崩溃,但搜索引擎会缺少"该向其余用户展示什么"这一问题的答案。
4. 语言代码在不同层级中并不一致 — 这是链接失效的根源
这里很容易浪费半天时间。同一种语言在三个地方可能有不同的写法:
-
在页面地址中 — 由你自行决定:
/kz/、/zh-CN/; -
在hreflang中 — 遵循BCP 47标准:哈萨克语为
kk,简体中文为zh-Hans; -
在数据库或API中 — 由开发者命名。
只要它们之间有转换机制,这本身没有问题。问题出现在有人用错误层级的代码来构建链接时 — 这样就会生成不存在的地址。
5. 地址中的大小写:链接的无声失效
只要有一个语言段带大写字母 — 正如zh-CN那样 — 迟早会以小写形式出现。邮件客户端、编辑器、部分代理服务器以及手动输入的人都会将URL转为小写。
请检查/zh-cn/会发生什么。最糟糕的情况:服务器无法识别该段,将其当作路径的一部分,在前面加上默认语言,并重定向到一个不存在的地址。表面上是301,实际上链条末端却是404。访客流失了,而带来他们的外部链接也白白浪费了。
这可以通过忽略大小写的比较,以及将每种写法通过一次重定向指向标准段的同义词表来解决。
6. 没有翻译时canonical应该指向哪里
常见情况:文章有俄语和乌兹别克语版本,而该页面的中文版本由于返回逻辑设置,显示的是俄语文本。
如果这样的页面将自己声明为canonical,就相当于要求在中文地址下收录俄语文本。正确的做法是指向实际显示内容的那个版本的canonical地址。这样信号就会集中在一个页面上,而不是分散在七份副本中。
反过来的规则也一样:不要在hreflang中列出没有翻译的语言。备选列表必须与实际存在的内容一致。
7. 网站地图也是hreflang的一部分
除了在<head>中声明外,还可以通过xhtml:link在sitemap.xml中声明备选版本。这在维护上很方便:链接关系只需在一个由程序生成的文件中描述一次,而不必分散在各个模板中。
两个条件:网站地图中只能包含无重定向、返回200的地址,且网站地图中的语言集合必须与标记中的语言集合一致。由重定向构成的网站地图会被部分忽略。
8. 页面地址是否应该翻译
翻译后的slug(例如/uz/xizmatlar/sayt-yaratish而不是/uz/services/website-development)更易读,也更符合人们构造搜索词的方式。
这个决定的代价是不可逆转。收录后只能通过重定向从旧地址过渡到新地址,并且需要保留这段重定向历史。如果决定翻译slug,请立即(而不是一年后)建立保留旧地址的机制。
9. 语言切换器不应丢失当前页面
从任何页面切换语言,都应跳转到该内容在另一语言中的对应页面,而不是主页。跳回主页对访客来说意味着丢失上下文,对搜索引擎来说则意味着链接断裂。
另外:切换不仅要改变文字,还要改变地址。如果切换语言后URL保持不变,那么刷新页面或把链接发给朋友时,语言又会变回原来的样子。
10. 翻译不只是可见的文字
常被遗漏的内容:
-
<title>和页面描述; -
<html>中的lang属性; -
图片的
alt; -
结构化标记中的文字;
-
表单的错误提示和404页面。
上线前检查清单
-
每个版本都有自己固定的地址。
-
hreflang是双向的 — 已在所有语言中检查过,而不只是一种。
-
x-default经过有意识的设置。 -
小写语言段不会导向404。
-
没有翻译的页面文字已规范化为实际显示的版本。
-
网站地图中只包含返回200的地址。
-
语言切换器会保留当前页面并更改地址。
-
title、description、
lang、alt以及404页面都已翻译。
如果多语言版本已经上线,但不确定链接是否正确设置 — 我们可以帮您检查,并准确指出问题出在哪里。


