前端设计

hreflang 标签

2025-11-10


hreflang 标签是什么样的?

hreflang 标签通常采用以下 HTML 标签的形式:


<link rel="alternate" hreflang="language_code" href="URL_of_alternative_page">


现在让我们看看 hreflang 标签是如何在 SE Ranking 的主页上实现的:


<link rel="alternate" hreflang="fr" href="https://seranking.com/fr/">


这些元素是什么意思?


link rel ="alternate":alternate 属性表示该链接代表当前页面的替代版本,在我们的例子中是法语版本。

hreflang ="fr":此属性指示备用页面的语言或语言区域。在我们的例子中,替代链接指向 “fr”,这是法语代码。

href =“https://seranking.com/fr/”:此属性指定与指定语言关联的备用页面的 URL。在我们的例子中,URL 指向法语页面,允许用户访问法语版本的内容。


语言和地区

语言和区域代码用于指定网页的替代版本的目标语言或区域。这些代码可以是单个代码,如 it、en、es、de 等,而在其他情况下,您可能会注意到 en-US、en-GB 等代码的组合。


第一种代码类型 (language code) 表示特定语言,并遵循 ISO 639-1 格式。它代表意大利语,en 代表英语,es 代表西班牙语,de 代表德语等。第二种代码类型(国家/地区代码),在组合示例中指定特定语言的区域,并遵循 ISO 3166-1 Alpha 2 格式。例如,en-US 表示英语,因为页面在美国显示,而 en-GB 用于显示英国的英语页面。


语言代码是强制性的,并且始终排在第一位,而国家/地区代码是可选的,排在第二位。例如,如果您编写 be 的目的是以比利时为目标,则它不会奏效。这是因为 Google 将第一个代码视为语言,而 be 被识别为白俄罗斯语言代码。


请务必注意,语言代码和区域代码不必彼此相关。例如:


pl 代表来自世界各地的用户的波兰语页面。

pl-PL 表示波兰语用户的波兰语页面。

pl-DE 表示来自德国的波兰语页面。


在某些国家/地区,用户可能会说不同的方言或使用不同的书写系统。例如,中国有 10 个方言组,而日语至少有 4 个方言组。在此类情况下,语言脚本变体可用于表示用于同一语言的不同书写系统或脚本。


如果您的网页是日语页面,并且定位到日本,则应使用 ja-JP 作为语言和国家/地区代码。但是,如果您使用日语音节(平假名和片假名),则应使用 Hrkt 作为脚本代码,最终语言代码将是 ja-Hrkt。您还可以添加区域代码来指定提供页面的人员,例如 ja-Hrkt-US。搜索引擎会明白您的页面是用日语音节编写的,并将其显示给美国的用户。


ISO 15924 列表中提供了完整的脚本集合。


什么是 x-default?

下面是一个 HTML 示例,其中包含具有 x-default hreflang 属性的行。


如果指定的语言都不符合用户的浏览器设置,则 x-default 会自动将他们重定向到默认页面。通常,用户将被重定向到页面的主版本。让我们考虑一个示例,其中 hreflang 属性用于页面的英语和意大利语版本。如果您使用 x-default hreflang 属性将英语版本设置为默认版本,则来自西班牙和法国的用户将被定向到该版本的页面,因为它是默认版本。


使用 x-default 属性有几个好处:


x-default 属性中提到的 URL 可以帮助搜索引擎发现它们。在大型网站的所有本地化 URL 之间建立全面的互连可能具有挑战性。通过使用 x-default,机器人可以提取 URL 并可能安排它们进行抓取。

如果您没有特定语言的内容,但仍希望用户在相关页面上执行操作,则可以将他们定向到默认页面,以便他们可以执行 Target 操作。

当您需要 hreflang 属性时

现在,让我们弄清楚何时需要使用 hreflang 属性:


当仅翻译网页的某些部分(模板、页眉、页脚或导航元素)时。

当网站针对不同区域具有不同的内容时。例如,美国用户的英语内容和加拿大用户的法语内容。

当网站完全本地化为多种语言时:

葡萄牙语网站可能有两个版本:

一个用于葡萄牙: <link rel=“alternate” href=“https://example.com/pt” hreflang=“pt-PT” />

一个用于巴西: <link rel=“alternate” href=“https://example.com/br” hreflang=“pt-BR” />

当全球站点在一种语言的不同区域具有多个版本时。这可以包括英国、美国和加拿大版本。

当网站提供不同语言时:英语、意大利语和中文。

当网站迎合来自特定地区的访客,并仅为来自英国的访客提供英语和法语内容时。

如果您的网站与上述任何示例类似,则必须实现 hreflang 属性。



何时不应使用 hreflang

让我们考虑几种不需要使用 hreflang 或应该谨慎使用的场景:

当您不定位其他语言或国家/地区时。


Hreflang 注释主要用于指示国际或多语言网站的语言和区域定位。如果您的网站只专注于服务于特定语言或国家/地区,并且您没有计划迎合其他地区,则无需实施 hreflang。


对于非规范页面

错误地将 rel=canonical 与 hreflang 属性一起使用可能会导致冲突并混淆搜索引擎。如果页面是重复的,并且 canonical 标签指向另一个页面,则不能使用 hreflang。


当 rel=canonical 将用户重定向到另一个页面时,它会向搜索引擎发送以下信号:“不要关注这个页面,请改为索引另一个 canonical 页面。当在同一页面上使用 hreflang 属性时,搜索引擎可能会将它们解释为:“请将此页面编入索引;我们这里有很棒的内容。而且不要忘记其他语言的版本。


当您定位到同一国家/地区的不同城市时

如果您有一个本地企业和一个针对同一国家/地区内多个城市的网站,并且您在这些城市的受众使用相同的语言,则可以不使用 hreflang 标签。但是,如果您来自这些城市的访问者使用不同的语言或方言,并且您有为他们量身定制的特定内容,请确保使用 hreflang 标签。


如果您的同一语言内容仅在某些部分(例如不同城市的商品配送信息)中略有不同,您可能需要采用通用解决方案,例如添加切换开关或价格计算器。


请记住,虽然有国家/地区和语言代码,但没有针对城市的特定代码。


要记住的另一件事是避免使用指向不存在的页面的 hreflang。这可能会使搜索引擎感到困惑,导致索引错误,并破坏用户体验。


Hreflang 和重复内容

重复内容是指存在于同一网站内或不同域内的多个 URL 上的相同或高度相似的内容。当搜索引擎遇到重复页面时,它们会面临确定向用户显示哪个版本的挑战。这可能会导致搜索引擎向目标受众显示错误版本的内容,从而导致目标流量和潜在转化的损失。


例如,让我们考虑一家在美国和英国运营的跨国电子商务公司。您提供相同的商品,但每个国家/地区都有单独的页面,具有相似的英文商品描述和内容。这可能会创建重复的内容,从而违反 Google 提供唯一信息的政策。但是,如果您以不同的语言(例如英语和德语)拥有相同的内容,则即使传达的信息相似,这些内容也不会被视为重复,因为您使用不同的语言。


如果您不告知搜索引擎每个页面都是不同的,并且针对不同的目标受众:

英国页面可能会出现在美国用户的搜索结果中,反之亦然。

或者,搜索中可能没有网页出现。


为避免这些问题中的任何一个,您需要添加 hreflang 属性,如下所示,该属性向 Google 表示它应该向美国用户显示网站的美国版本,并向英国用户显示网站的英国版本:


<link rel="alternate" hreflang="en-us" href="http://www.example.com/us" />

<link rel="alternate" hreflang="en-gb" href="http://www.example.com/uk" />


但请记住,hreflang 为搜索引擎提供指导,而不是指令。正确的实施和维护对于确保其有效性至关重要,因为不正确或不完整的 hreflang 标签会导致重复的内容问题。


另一个关键点是,您仍然应该尝试使您的内容尽可能独特。在下面的引文中,John Mueller 建议使用 hreflang 并为每个国家/地区的用户提供独特和具体的各个方面,而不是简单地跨国家/地区复制内容。


如果您无法为不同的市场提供独特的内容,请问问自己是否真的需要这些不同的语言版本。有时,使用 ‘en’ hreflang 将它们合并为一个而不指定区域更有意义。


Hreflang 标签与规范标签:有什么区别?

在处理重复内容和国际定位时,Hreflang 和规范标签都是重要的 SEO 元素。但是,它们具有不同的用途,有时会引起混淆。


Hreflang 标签通知搜索引擎特定网页的语言和区域定位,将它们中的每一个都视为值得索引的单独页面。它们指导搜索引擎根据用户的语言偏好和地理位置向用户显示最相关的页面版本。


另一方面,规范标签指定具有相似或相同内容的多个 URL 中的哪个 URL 应被视为页面的首选或规范版本。他们指示搜索引擎对所选的规范版本进行索引和排名,同时忽略其他版本。


这两个标签可以一起使用。例如,如果网站英文版的页面 A 与页面 A1 和 A2 的内容相同,而德语版的页面 B 与页面 B1 和 B2 的内容相同,则每个重复的页面都必须具有指向主页面的 rel=canonical 标签:


<link rel=“canonical” href=“https://www.preferred-page/”>


页面 A1 和 A2 必须将页面 A 指定为规范版本,而页面 B1 和 B2 必须将页面 B 指定为规范版本。确定之后,使用规范页面的 hreflang 属性来指示语言和区域定位。


使用 hreflang 和 canonical 标签时,请遵循以下规则:


确保标签之间不会相互冲突。避免 hreflang 标签指示定位特定国家/地区,而页面上的 canonical 标签指向其他 URL 的情况。

每个页面仅使用一个规范标签以避免索引问题。

不要将 hreflang 和 canonical 标签合并为单个标签。

通过将针对不同语言的 URL 整合到 hreflang 集群中,帮助搜索引擎确定页面的规范版本。这使 Google 能够更好地了解不同页面版本之间的关系,从而在搜索结果中显示最相关的版本。


如何设置 hreflang 属性

有三种方法可以通过 hreflang 实现通知 Google 页面的多种语言版本:


HTML 标签

HTTP 标头

网站地图

让我们更多地了解它们中的每一个,以便您可以根据语言或地区将用户和搜索引擎引导至最相关的网页版本。


HTML 标签

以下是 seranking.com 中的一段 HTML 代码示例,其中包括 hreflang 属性和 HTML 标记。

要将来自不同地区的用户引导至正确的页面,您应该将<link>标签插入到要包含的每个页面的 <head> 元素中。



每个元素必须具有以下结构:


<link rel="alternate" hreflang="lang_code" href="url_of_page" />

粗体元素 “lang_code” 和 “url_of_page” 是表示语言代码和/或区域以及相应链接的变量。例如,如果要为来自法国的访客指定代码,请使用 fr 作为语言代码,然后添加相应的链接:


<link rel="alternate" hreflang="fr" href="https://seranking.fr/">


HTTP 标头

如果您有非 HTML 文件(如 PDF),则可以使用 HTTP 标头通知搜索引擎有关多种语言的可用页面。


HTTP 标头必须具有以下结构:


Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", …


url:这是指页面的本地化版本的完整 URL。

lang_code:这表示支持的语言/区域代码。

假设您要提供 PDF 文件的两个德语版本:一个用于英国用户,另一个用于国际用户。HTTP 标头如下所示:


Link: <http://de-gb.example.com/file.pdf>; rel="alternate"; hreflang="de-GB",

       <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"  

AI写代码


网站地图

让我们通过以下示例来探索如何使用 Sitemap 通知搜索引擎页面的替代版本。


假设我们有两个页面:一个用于来自阿根廷的讲西班牙语的访客,另一个用于来自其他国家/地区的讲西班牙语的访客


www.example.com/ es-ar/page.html:面向阿根廷用户的西班牙语网站

www.example.com/ es/page.html:面向其他国家用户的西班牙语网站

站点地图将包含以下代码:


<?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/es/page.html</loc>

     <xhtml:link

                rel="alternate"

                hreflang="es-ar"

                href="http://www.example.com/es-ar/page.html"/>

     <xhtml:link

                rel="alternate"

                hreflang="es"

                href="http://www.example.com/es/page.html"/>

   </url>

   <url>

     <loc>http://www.example.com/es-ar/page.html</loc>

     <xhtml:link

                rel="alternate"

                hreflang="es"

                href="http://www.example.com/es/page.html"/>

     <xhtml:link

                rel="alternate"

                hreflang="es-ar"

                href="http://www.example.com/es-ar/page.html"/>

      </url>

 </urlset> 



Hreflang 基本原则

以下基本的 hreflang SEO 原则确保这些注释正确运行并有效地指示网页的语言和区域差异。仔细阅读它们,以便在您的国际 SEO 策略中正确使用 hreflang 标签。


Hreflang 标签应包含页面的所有语言版本,包括页面本身。

这意味着除了提及其他语言版本外,hreflang 还应该指向原始页面。这称为自引用 hreflang 标签。例如,如果您在指向页面的德语版本的英语页面上使用 hreflang,则还应为英语版本添加 hreflang。


<link rel="alternate" hreflang="de" href="http://www.example.com/de" />

<link rel="alternate" hreflang="en" href="http://www.example.com/us" />


您应该将这两个标签添加到两个页面。通过包含所有语言版本,搜索引擎可以根据用户偏好准确确定要显示的适当版本。


Hreflang 注解应该具有互惠关系。

这意味着,如果英语页面具有指向德语页面的 hreflang 标记,则德语页面也应具有指向英语页面的 hreflang 标记。


这种互惠链接有助于建立语言版本之间的联系。如果缺少返回链接,搜索引擎可能会忽略 hreflang 标签。


此要求还可以防止未经授权的各方创建您页面的替代版本。


指定备用 URL 的完整地址

Hreflang 注释应为页面的原始版本和替代版本使用完全限定的 URL,包括协议 (http/https)。这确保了清晰度并防止在解释 URL 时出现任何歧义。


例如:


<link rel="alternate" hreflang="en-us" href="//example.com/page-us" />


搜索引擎将忽略此 hreflang 标签,因为 URL 不完整。


<link rel="alternate" hreflang="en-us" href="https://example.com/page-us" />


这个 hreflang 标签可以正常工作,因为 URL 地址是完整的并且包含协议。


Hreflang 标签可以包含属于不同域的备用 URL。

在某些情况下,网站的多语言版本可能存在于单独的域中,例如 examplesite.com 和 examplesite.co.uk。但是只要满足上述要求,您仍然可以使用 hreflang 标签在这些站点之间建立连接,无论域名如何。


如何审核您的网站是否存在 hreflang 问题

手动检查所有页面可能非常困难,如果不是不可能的话。以前,Google 建议使用 Google Search Console 中的国际定位报告来识别错误。然而,搜索引擎明确表示,此报告在 GSC 中不再可用。


如今,检测和调试 hreflang 实现问题最实用和最常见的方法是使用 SE Ranking 的 SEO 网站审核工具等工具。该工具不仅可以检查您的 hreflang 并提供错误详细信息,还可以提供有关如何修复它们的建议。


网站诊断工具将帮助识别以下 hreflang 问题:


语言代码无效

Hreflang 页面没有链接到自身

指向非规范页面的 Hreflangs

Hreflang 和 HTML lang 属性不匹配

hreflang 页面上缺少确认(返回)链接

一个页面的多种语言代码

hreflang 注释中的语言重复

缺少 x-default hreflang 注释