如果您的某个网页针对不同语言或区域提供了多个版本,请将这些不同变体告知 Google。这样一来,Google 搜索便可按语言或区域将想访问您网页的用户引导至最恰当的版本。
请注意,即使您没有采取上述措施,Google 仍可能会找到您网页的备用语言版本,但通常还是建议您明确指明您针对特定语言或区域提供的网页。
下面是一些建议指明备用网页的示例情形:
用单一语言显示网页的主要内容,只翻译了模板部分,例如导航和页脚部分。以用户生成的内容为主的网页(如论坛)通常会采取这种做法。
网页用单一语言为不同区域的用户提供相似的内容,且内容的区域性差异非常细微。例如,您可能会有面向美国、英国、爱尔兰用户提供的英语内容。
网站内容已完全翻译成多种语言。例如,您的每个网页都有德语版本和英语版本。
如果网页的主要内容未经翻译,则该网页的本地化版本仅会被视为它的重复网页。
视频说明:
https://www.youtube.com/watch?v=8ce9jv91beQ
指明备用网页的方法 #
您可通过以下三种方式向 Google 指明某个网页的多个语言/语言区域版本:
HTML 标记 #
您可以通过在网页标头中添加 <link rel=”alternate” hreflang=”lang_code”… > 元素,将网页的所有语言和区域变体告知 Google。如果您没有站点地图或无法为您的网站指定 HTTP 响应标头,此方法非常有用。
对于网页的每个变体,您都应在 <head> 元素中添加一组 <link> 元素,并使每个网页变体(包括网页自身)分别对应一个链接。网页的每个版本所对应的那组链接都应是相同的。
以下是每个 link 元素的语法:
<link rel="alternate" hreflang="lang_code" href="url_of_page" />
- lang_code
- 此网页版本所定位的受支持的语言/区域代码,或 x-default(以与该网页上的 hreflang 标记未明确列出的任何语言匹配)。
- url_of_page
- 此网页的特定语言/区域版本对应的完全限定网址。
请将 <link> 标记放在 <head> 元素顶部附近。最起码,<link> 标记必须位于格式正确的 <head> 部分内,或位于可能会导致 <head> 过早结束的任何项目(例如 <p> 或跟踪像素)前面。如果不确定,请将所呈现的网页中的代码粘贴到 HTML 验证工具中,确保相关链接位于 <head> 元素内。
示例 #
例如,Widgets, Inc 有一个面向美国、英国和德国境内用户的网站。以下网址包含的内容大致相同,但具有区域性差异:
http://en.example.com/page.html – 通用英语版首页,包含与从美国到全球各地的运费相关的信息。
http://en-gb.example.com/page.html – 英式英语版首页,显示以英镑为单位的价格。
http://en-us.example.com/page.html – 美式英语版首页,显示以美元为单位的价格。
http://de.example.com/page.html – 德语版首页。
http://www.example.com/ – 不针对任何语言或语言区域的默认页;提供了选择器供用户选择自己的语言和区域。
请注意,Google 不会根据这些网址中针对特定语言的子网域(en、en-gb、en-us、de)确定网页的目标受众群体;您必须将网页明确地关联到对应的目标受众群体。
您应将下面的 HTML 粘贴到上方列出的所有网页的 <head>
部分中。这会将美式英语、英式英语、通用英语和德语用户引导至对应的本地化网页,并将所有其他用户引导至通用首页。Google 搜索会根据用户的浏览器设置为他们返回适当的结果。
<head> <title>Widgets, Inc</title> <link rel="alternate" hreflang="en-gb" href="http://en-gb.example.com/page.html" /> <link rel="alternate" hreflang="en-us" href="http://en-us.example.com/page.html" /> <link rel="alternate" hreflang="en" href="http://en.example.com/page.html" /> <link rel="alternate" hreflang="de" href="http://de.example.com/page.html" /> <link rel="alternate" hreflang="x-default" href="http://www.example.com/" /> </head>
HTTP 标头 #
您可以返回包含网页 GET 响应的 HTTP 标头,以将相应网页的所有语言和区域变体告知 Google。这种方法对非 HTML 文件(如 PDF)很有用。
标头格式如下:
Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
- <url_x>
- 备用网页的完全限定网址,与向所关联的 hreflang 属性分配的语言区域字符串对应。该网址必须位于 < > 标记中。示例:<https://www.google.com>
- lang_code_x
- 此网页版本所定位的受支持的语言/区域代码,或 x-default(以与该网页上的 hreflang 标记未明确列出的任何语言匹配)。
您必须为网页的每个版本(包括被请求的版本)分别指定一组用英文逗号分隔的 <url>、rel=”alternate” 和 hreflang 值,如下例所示。网页的每个版本所返回的 Link: 标头都应相同。
示例 #
下面是一个由具有 3 个 PDF 文件版本的网站返回的 Link:
标头示例,这三个版本分别面向英语用户、瑞士境内的德语用户以及所有其他德语用户:
Link: <http://example.com/file.pdf>; rel="alternate"; hreflang="en", <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch", <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"
站点地图 #
您可以使用站点地图将每个网址的所有语言和区域变体告知 Google。为此,请添加一个指定单个网址的 <loc> 元素,其中的子 <xhtml:link> 条目应列出该网页的每种语言/语言区域变体(包括网页自身)。因此,如果某个网页有 3 个版本,那么站点地图便应包含 3 个条目,每个条目都应包含 3 个完全相同的子条目。
站点地图规则:
按如下方式指定 xhtml 命名空间:
xmlns:xhtml=”http://www.w3.org/1999/xhtml”
为每个网址分别创建一个单独的 <url> 元素。
每个 <url> 元素都必须包含一个指明网页网址的 <loc> 子元素。
每个 <url> 元素都必须包含一个子元素 <xhtml:link rel=”alternate” hreflang=”supported_language-code“>,其中应列出网页的每个备用版本(包括网页自身)。这些子 <xhtml:link> 元素的顺序无关紧要,但您不妨让它们保持相同的顺序,以方便您检查错误。
示例 #
下面是一个以全球英语用户为目标用户的英语版网页,以及此网页的以全球德语用户和瑞士境内的德语用户为目标用户的等效版本。您网站中的所有网址如下所示:
www.example.com/english/page.html,以英语用户为目标用户。
www.example.com/deutsch/page.html,以德语用户为目标用户。
www.example.com/schweiz-deutsch/page.html,以瑞士境内的德语用户为目标用户。
以下是这 3 个网页的站点地图:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>http://www.example.com/english/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/english/page.html"/> </url> <url> <loc>http://www.example.com/deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/english/page.html"/> </url> <url> <loc>http://www.example.com/schweiz-deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="http://www.example.com/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/english/page.html"/> </url> </urlset>
针对所有方法的准则 #
每个语言版本都必须列出其自身以及所有其他语言版本。
备用网址必须是完全限定的网址,包括传输方法 (http/https),例如:
必须是 https://example.com/foo,而不能是 //example.com/foo 或 /foo
备用网址无需位于同一个网域中。
如果您有多个备用网址以使用相同语言但位于不同语言区域的用户为目标用户,则最好也为使用该语言但地理位置不明的用户提供一个通用网址。例如,您可能为爱尔兰 (en-ie)、加拿大 (en-ca) 和澳大利亚 (en-au) 地区的英语用户提供了特定网址,但也应为(只是举例)美国、英国和所有其他以英语为母语的地理区域的搜索用户提供一个通用英语版 (en) 网页。如果您愿意的话,也可以从您的诸多特定网页中选择一个作为通用网页。
如果两个网页没有互指,系统将会忽略相关标记。这是为了确保另一网站上的某个用户无法随意通过创建一个标记将该网站命名为您的某个网页的备用版本。
如果您很难为每种语言分别维护一套完整的双向链接,则可在部分网页上省略一些语言;Google 仍会处理那些互指的网页。但是,请务必在新增的语言网页和源语言/主要语言之间建立双向链接。例如,如果您最初用法语创建了网站,并采用了 .fr 网址,那么当您新增墨西哥语 (.mx) 和西班牙语 (.es) 网页后,应该优先在这两个语言的网页与曝光率很高的 .fr 网页之间建立双向链接,而不是在新增的西班牙语变体网页(.mx 和 .es)之间建立双向链接。
请考虑为不匹配的语言添加后备网页,尤其是在语言/国家/地区选择器中或是在会自动重定向的首页上。在这种情况下,请使用 x-default 值:
<link rel="alternate" href="http://example.com/" hreflang="x-default" />
受支持的语言/区域代码 #
hreflang 属性的值用于标识备用网址的语言(以 ISO 639-1 格式表示)和区域(可选,以 ISO 3166-1 Alpha 2 格式表示)。(语言不必与区域相关。)例如:
de:德语内容,不限区域
en-GB:英语内容,面向英国境内的用户
de-ES:德语内容,面向西班牙境内的用户
请勿仅指定国家/地区代码。Google 不会根据国家/地区代码自动推断出语言。如果您希望简化标记,可仅指定语言代码。在语言代码后面添加国家/地区代码,可使网页仅面向特定区域显示。示例:
be:白俄罗斯语内容,不限区域(非比利时法语)
nl-be:荷兰语内容,仅面向比利时
fr-be:法语内容,仅面向比利时
如果有多种语言文字变体,系统会根据国家/地区推断出适当的文字。例如,当针对台湾用户使用 zh-TW 时,系统会自动衍生出相应的语言文字(在此示例中,即“中文(繁体)”)。您也可利用 ISO 15924 明确指定文字,例如:
zh-Hant:中文(繁体)
zh-Hans:中文(简体)
此外,您也可以同时指定文字和区域 – 例如,使用 zh-Hans-TW 为台湾用户指定中文(简体)。
针对不匹配的语言使用 x-default 标记 #
当任何其他语言/区域都与用户的浏览器设置不匹配时,系统会使用保留值 hreflang=”x-default”。此值是可选的,但建议您使用,以便在所有语言都不匹配的情况下控制网页。一种值得考虑的做法是:定位到您网站的首页(其中应有一个可点击的地图,以便用户选择他们的国家/地区)。
问题排查 #
常见错误 #
下面列出了使用 hreflang 时最常见的错误:
缺少返回链接:如果网页 X 链接到网页 Y,那么网页 Y 必须要链接回网页 X。如果所有使用 hreflang 注解的网页并未全部满足这项要求,系统可能会忽略或无法正确解译这些注解。
语言代码不正确:确保您使用的所有语言代码均标识出备用网址的语言(以 ISO 639-1 格式表示)和区域(可选,以 ISO 3166-1 Alpha 2 格式表示)。仅指定区域是无效的。
调试 hreflang 错误 #
您可以使用“国际定位”报告来调试最常见的问题。请务必确保 Google 有足够的时间抓取您的网页,然后访问该报告中的语言标签页,看看是否检测到了任何错误。
您还可以使用很多第三方工具。下面列出了一些热门的工具。(这些工具不是由 Google 维护或检查。)
Aleyda Solis 的 hreflang 标记生成器工具,可生成或修改 hreflang 标记。
Merkle SEO hreflang 标记测试工具,可验证单个实际网页上的 hreflang 标记。