什么是赫夫朗?
Hreflang 是一个 HTML 属性,用于指定网页的语言和目标区域。它对于包含多种语言内容或迎合不同地理位置的网站非常有用。像 Google 这样的搜索引擎使用此属性来为用户提供最合适的页面版本。
假设您在美国搜索“semrush blog”。这是您看到的结果:
![](https://static.semrush.com/blog/uploads/media/78/52/7852c132c3e3772ea882719e21a643aa/kD9xmk7ied4ZSC1aIn3jXcfSS2-wbxzVf4hN4qkvPCwdhrg42ssdaHk821nwAp4aVFXYyqs5J6Dkog7MragA2izmi-cytkrwm32o_NHJ4-aiME0xLQj2l68MPXYnA8dxoyU6MFikumRdO87RrUEQeXZjfyZvxe8iPyHt8qQ7qHMmzF_QUVbqg4PN7KA7EQ.png)
而如果您在西班牙,您会看到以下内容:
![](https://static.semrush.com/blog/uploads/media/9d/c7/9dc7e72f9e714a1f80363797fb54a2c7/TOQmefS47IXxiw-pvUnjZp869699avi2X5DDPzw5qAruPWZMIVD5B7yw7Do6HuQLj7VOmh7dxiLnSzFfZQNgCg0xwrtb07ewe3GTsYKhwry7TW_-DGWLjnX223b14tg3fY6ZLX8LVT4lfv_U1ORnOQIMfOQb-uSnydt5jfa1iUhlit4JnFXdC-16ZDDiJg.png)
如果没有正确使用 hreflang 属性,这是不可能的。
Hreflang 标签是什么样的?
Hreflang 遵循一致且简单的结构。通常,它看起来像这样:
<link rel="alternate" href="url_of_page" hreflang="lang_code" />
这是语法(计算机语言)的含义:
- link rel=“alternate”表示此标签中的链接是此页面的替代版本
- href=“url_of_page”是您可以找到备用页面的地方
- hreflang=“lang_code”是替代语言
注意:hreflang 标签是一个信号,而不是指令。Google和Yandex使用 hreflang 属性。百度和必应没有。它们依赖于内容语言 HTML 属性。
如何构建 Hreflang 标签
要创建 hreflang 标签,您需要首先找到所需的语言和国家/地区代码。然后填空。
Hreflang 支持两个字母的ISO 639-1 语言代码和ISO 3166-1 alpha-2 国家和地区代码。
(您并不总是需要国家或地区代码。但它可以派上用场。)
假设您的英语博客已翻译成西班牙语和葡萄牙语。文章的 hreflang 属性应如下所示:
<link rel="alternate" href="https://example.com" hreflang="en" /><link rel="alternate" href="https://example.com/es/" hreflang="es" /><link rel="alternate" href="https://example.com/pt/" hreflang="pt" />
每个网页上的 hreflang 属性应包含对所有作为备用 页面的引用。
包括对其自身的引用。Google 在其指南中建议使用自引用 hreflang 。
如果您的 hreflang 属性未引用所有相关的备用页面,搜索引擎可能会忽略或误解您的 hreflang 标记。
意思是:
上述英文文章代码片段中的参考链接应出现在您的西班牙语和葡萄牙语页面上。
但是,如果您的目标是另一个也讲葡萄牙语的国家/地区该怎么办?比如巴西。
(例如,如果您以不同的货币销售产品,您可能需要这样做。)
在这种情况下,您还需要添加国家/地区代码。
因此,看起来像这样,“pt”是葡萄牙的两个字母国家代码,“br”是巴西的国家代码:
葡萄牙语 葡萄牙语:
<link rel="alternate" href="https://example.com/pt/" hreflang="pt-pt" />
巴西葡萄牙语:
<link rel="alternate" href="https://example.com/br/" hreflang="pt-br" />
这里的语法有点不同。它是 hreflang=“语言国家”,而不仅仅是 hreflang=“语言”。
这就是您需要做的全部。
专业提示:设置默认标签也很重要。当没有其他本地化版本合适时,它们为用户指示后备页面。
X-default 标签不是强制性的,但建议使用。
要实现 x-default 标签,请添加注释并将“href”属性设置为您希望用户在您的网站不支持用户语言时登陆的 URL。
像这样(最后显示):
<link rel="alternate" href="https://example.com" hreflang="en-us" /><link rel="alternate" href="https://example.com/es/" hreflang="es-es" /><link rel="alternate" href="https://example.com/pt/" hreflang="pt-pt" /><link rel="alternate" href="https://example.com/pt/" hreflang="pt-br" /><link rel="alternate" href="https://example.com" hreflang="x-default" />
Hreflang 标签去哪里?
实现 hreflang 属性的方式有以下三种:
- 在页面的 HTML 头部
- 在 HTTP 标头中(对于 PDF 等非 HTML 文件)
- 在 XML 站点地图中
1. 在 HTML 中
指示备用页面的最基本方法是在页面的 HTML 代码中。
只需在页面的 <head> 部分添加所有相关的 hreflang 属性即可。
请记住,文章的每种语言版本都必须引用自身。以及所有其他语言版本。
每个元素的语法如下所示:
<link rel="alternate" href="url_of_page" hreflang="lang_code" />
这种方法唯一真正的问题是它可能很混乱且耗时。
例如,每次将文章翻译成另一种语言时,您都必须返回并在其所有版本中添加另一个 hreflang 标签。
注意:对于大量 hreflang 条目,您可能希望通过站点地图指示备用页面。我们稍后会介绍如何做到这一点。
要在 HTML 中创建或修改 hreflang 标签,请尝试使用 hreflang 工具。
对于此示例,我们将使用 Aleyda Solis 的hreflang 生成器工具。
只需输入您正在处理的文章的每个版本的 URL、语言和国家/地区。
选择“要包含在 HTML 页面头部区域的标签”,然后单击“为这些 URL 生成 HREFLANG 标签”。
![](https://static.semrush.com/blog/uploads/media/c3/e5/c3e5ca422fb44845cdd46ac8cc499d26/QwWSqSNLgSFAFSpyuPTGv14JLaB-kNhJ1UDUuyIW1GlbP2gJvc39C91HWjbARV4kDtHcYMeyvuT6TC0ZqYTR0DjCRLw1ygdP1XLRZ2BNhBcQFUzHKUldDdNMI1wnyEryoySvfHdgGVuD14TjFKhvSSkrylrIGKQ0-kBfU5QDWBswgu3SDZD1SlFNtchM7Q.jpeg)
然后,复制代码并将其粘贴到每个页面的 <head> 标记中。
![](https://static.semrush.com/blog/uploads/media/b6/98/b6980a5005710f9608e192369ea955a0/7YUdmBhfRY8-hO1zJoyCrAsFGy7Qen1vYg-dxe0B_3RFfbifGAFdk_k02Kx2xKmuNI0nJRe5eiaCzFwOdJBPA-pFEhj6n23xgPLS8gl-mgo15ftsoP7zfpA34lB2tehKlG_1CB7q5eg8d-wKbO1UyOG4ZHpwoz9k60T3lyQiCLDIqhE-SnraZKxJ-rESYQ.jpeg)
2. 在 HTTP 标头中
HTTP 标头非常适合为网站上的非 HTML 内容实现 hreflang 属性。
例如,像 PDF。
HTTP 标头代码在服务器和客户端之间传输数据。此代码包含有关请求日期、推荐人、首选语言等信息。
注意:您也可以对 HTML 内容使用此方法。但它会给服务器请求增加很多负担。因此,您最好仅在绝对必要时才使用它。
HTTP 中的标头格式如下所示:
Link: <url 1>; rel="alternate"; hreflang="language code 1", <url 2>; rel="alternate"; hreflang="language code 2", …
语法含义如下:
- <url x>是与分配给 hreflang 属性的区域设置相关的备用页面的 URL。它必须包含周围的 < 和 > 标记。
- 语言代码 x是该页面所针对的语言(或区域)代码
您必须为页面的每个版本(包括其本身)指定一组 <url>、rel=”alternate” 和 hreflang 值,并以逗号分隔。
假设您创建了一个具有三个版本的 PDF 文档:一个是英语版本,一个是西班牙语版本,一个是葡萄牙语版本。
您的 HTTP 标头应如下所示(对于每个文件):
Link: <https://example.com/doc.pdf>; rel="alternate"; hreflang="en", <https://example.com/es/doc.pdf>; rel="alternate"; hreflang="es", <https://example.com/pt/doc.pdf>; rel="alternate"; hreflang="pt"
3. 关于 XML 站点地图
第三种 hreflang 实现方法是通过 XML站点地图。
XML 站点地图是一个文件,它为搜索引擎提供有关站点页面的信息。
因此,这是让 Google 了解每个 URL 的所有语言和区域变体的好方法。
它还有一个主要好处:
XML 站点地图允许您在一处对 hreflang 属性进行任何更改。
使用 HTML 和 HTTP 标头 hreflang 方法,每次将博客或文档翻译成另一种语言时,您都必须进入并更新多个文件。它变得混乱。
首先,您需要为每个 URL 添加一个 <loc> 元素。为页面的每种语言和区域版本提供 <xhtml:link> 条目。
包括它自己。
意思是:
如果您的页面有三个版本,则您的站点地图将包含三个条目。每个 URL 一个。每个条目都会有三个相同的列表。
如果我们使用英语、西班牙语和葡萄牙语博客的原始示例运行,则此博客文章的站点地图部分将如下所示:
<url><loc>https://https://example.com</loc><xhtml:link rel="alternate" hreflang="en-us" href="https://https://example.com" /><xhtml:link rel="alternate" hreflang="es-es" href="https://example.com/es/" /><xhtml:link rel="alternate" hreflang="pt-br" href="https://example.com/pt/" /></url><url><loc>https://example.com/es/</loc><xhtml:link rel="alternate" hreflang="en-us" href="https://https://example.com" /><xhtml:link rel="alternate" hreflang="es-es" href="https://example.com/es/" /><xhtml:link rel="alternate" hreflang="pt-br" href="https://example.com/pt/" /></url><url><loc>https://example.com/pt/</loc><xhtml:link rel="alternate" hreflang="en-us" href="https://https://example.com" /><xhtml:link rel="alternate" hreflang="es-es" href="https://example.com/es/" /><xhtml:link rel="alternate" hreflang="pt-br" href="https://example.com/pt/" /></url></urlset>
您可以使用相同的hreflang 生成器工具在 XML 站点地图中创建或修改 hreflang 标记。
首先输入每个版本的 URL、语言和国家/地区。
然后选择“ XML 站点地图中的属性”并单击“为这些 URL 生成 HREFLANG 标签”。
![](https://static.semrush.com/blog/uploads/media/e6/ce/e6ce6eb03f90687ab2848d1a51a3c6a1/5yXk1wJ81mVdon3P_P1utZXlZRhdM_ZIqCqc5mr7po67h-x014zPGfO9TBCer95TyeFH4-ccqAXALmSmr-u0idFCiZ8fsHHdfDoK-iCtQoGbwpjRMglrazUxe5yq0wCJvIYk7ZDydmdfNQRd8HEURIMeQaIUoowUxFfECZZGoSQkGJbKapmroxma4umg5Q.jpeg)
然后,复制代码并将其添加到站点的 XML 站点地图中。
![](https://static.semrush.com/blog/uploads/media/d6/bb/d6bb0d9cdd26688b5834219b16d8f9ce/pJwXth3c3qvp91ER54dMc5fCDTTZlqiXk4-gqfSmkduPmSNyqWvByYI_zL17rptnqPhxOYNdGuBVf0czKd6eBT2sX3cV1hA3-FoxJFel7XzsKSmZkLrlQZeyyvaOJCEU2JBwP6HTJ9xKWZAjC1UEKnndtTQI066m_1qItCetzEpb6geaaFhvGsLZBc3_3g.jpeg)
如何查找并修复 Hreflang 问题
您可以通过定期审核您的网站来查找并修复 hreflang 问题。
并使用 Semrush 的站点审核工具作为 hreflang 检查器。
首先输入您的域并创建一个项目。
![](https://static.semrush.com/blog/uploads/media/d9/7d/d97d6e2d40f7b2245aa0d51e90d5368e/S1j7oE9hLV8WbeEftZUGmOjGvBbCQD0hi_cJOnrnFw5PVlaQw11qGY2HKduOaDlCpK0ztUMeO5MG8xADyx9xMTtTACNxErTtLYgJZJ97a1gN_OLBwCTD63W65S1KWtSWGSeft8_VsCz99dpcetQg2oiJjHgaYtXlVOC8GQfk1nI6hAAHKIOVq1XXN_Sdog.jpeg)
该工具抓取您的网站后,前往“问题”选项卡。然后,在搜索栏中搜索“hreflang”。
像这样:
![](https://static.semrush.com/blog/uploads/media/29/5b/295b76463538d5b48f600c5b02088349/Tb2srLiDoTJtFDDRWvsbh3uJRPlvdTGQqfEEQmOHq89aGr3maRzqYlow5-QaEyVhA_H5Umfz7RHAu2_HWEsewn4btVFrwXK1JWJm6xn76QmpgMtWswb3-dO39xY4ZSbE8c_5xSZGQupCc9DSqVymOeUrKwY-9-VpBquw69TUW6wWDpp1OyCkoraENOImTw.jpeg)
您将看到所有 hreflang 冲突的列表。包括问题的类型以及如何解决它。
![](https://static.semrush.com/blog/uploads/media/d6/ff/d6ff2aa19a84f7c7a963c7b0abcfd635/zo2mYOXpaLMXohZYeYd8VllIR39RWZgsj9njhD0AFpAsaEGWMLXQ6tmAUsaQVAlxdyEVbOdvkTgDdANbTgEp20P5eNAUf_OeIQFauKsmJ9cverVJOI0gJKBwJnX348kbpFXzZfa902IQ36-mn3sk3RQGEOhSytY3yBOxfy2bqfIy5yEzMua9ZYNeN24xgQ.jpeg)
作为参考,以下是最常见的 hreflang 问题以及如何解决这些问题:
Hreflang 值的问题
当国家或语言代码的格式不正确时,会触发此类警告。
![](https://static.semrush.com/blog/uploads/media/7d/3b/7d3b4d162943f11a999fe3d9c3e2d0af/SSZ_nCfkia6LUNsM7x22NWPa9DZ3VFujLJZWaQnZ86WSJ_VhM_KbX5JuXkLDuPR_ouz2LD8KhPbhDQNuwEh5IGJ4P2p6qNg1yTKDmVOsNOTdTsj0RN0DxJP0lyXxR3unnPbN78KgovZP0QD8PrAo4ofdMYhzJBusSBme5RF52kmT9O3GN4Bbpt4UA-uTdQ.jpeg)
解决这个问题很重要,因为搜索引擎可能会忽略代码不正确的 hreflang 标签。
如果他们忽略该标签,他们可能会向用户显示错误版本的页面。这对你的 SEO 不利。
通过检查每个受影响 URL 中的 hreflang 标签来修复此问题。
确保每个属性中的语法遵循正确的代码。两个字母的 ISO 639-1 表示语言,ISO 3166-1 alpha-2 表示国家和地区。
您始终可以使用 hreflang 生成器工具来验证或创建标签。
没有自引用 Hreflang
每个页面上的 hreflang 属性应包含对所有作为备用页面的引用。包括对其自身的引用。
![](https://static.semrush.com/blog/uploads/media/ee/d5/eed533c608465dbd96838492e349ec66/joR5W-_dOgGbkAyJE9NUzayu5rOaWXCM-JikPPwX4a-UxPWv-uoH6cGz7vlNMSPAFefsEdd5nvi48x9aAzuZHCJxGsd3XX4I8ZXmNCbsYi5y-RtqZVChneA4Yi-I7ihJcdP1CAfWunZy6kS0ohOlCWI-ZpZnot1AmyJnhjkzgf9trEs5wqBZuUIjOxe59Q.jpeg)
如果 hreflang 属性不自引用,搜索引擎可能会忽略或误解它们。
通过检查每个受影响的 URL 并将自引用 hreflang 标记添加到 hreflang 属性集来修复此问题。
Hreflang 链接不正确的问题
当 hreflang 属性中的链接存在问题时,会触发此类警告。
例如,链接可能指向已损坏或已重定向的页面。
![](https://static.semrush.com/blog/uploads/media/f3/24/f32495579cfc143b3c18f89d7ae1b073/P_Nov2AyfyNcJW7DlZ9mS6iC8o9nNChxLHQICmgAPlenE3knGXjqX_pT6vfkNA7hXhNrPYsj1SYKZJM-CEy-kWqSCcm6jV8bsIJsJO9FgZC-Co-5I5GCiuoLou0KA4n-z0AcEKigT5cK277-rz1lRlpxNRkWxP2-4_TxxKx4VrY0CZyEIymN6_dA8cZv1w.jpeg)
如果发生这种情况,搜索引擎可能会忽略您的 hreflang 属性。
通过检查每个受影响的 URL 并更改注释以确保其指向工作页面来修复此问题。
Hreflang 和 Rel=Canonical URL 冲突
当 hreflang 标记引用非规范 URL 时,会出现此类警告。
![](https://static.semrush.com/blog/uploads/media/2c/a0/2ca0feae3c6efa3815d58501a68bb1bc/gfE3vmk40hvAYc0EG4GBm9vDf4UTMjxAMtUsySLNy-CQmElTpup63w6FRSSQqlpQF9XIYT_V_olIRoCcBbGxyoYZLMGWc0gaRkSElMUYpzc5uIjitwYeM_XDQ6Co8AhzWOzUTnlrqEZvAD4olPRAcNakzk0-wOv3zivBdDGtxn49jXVoQs33mIYHXzwnOQ.jpeg)
规范标签是一种 HTML 属性,当您有重复(或接近重复)的页面时,它指示页面的主要版本。它告诉搜索引擎哪个版本的页面最权威并且应该出现在搜索结果中。
那么,如果您的 hreflang 属性引用特定页面的非规范版本怎么办?
这两个标签相互矛盾:
- hreflang 属性表示非规范页面应该出现在使用特定语言的用户的搜索结果中
- 规范标签表示该页面的不同版本应该出现在搜索结果中
简而言之:它会让搜索引擎感到困惑。他们可能会忽略 hreflang、规范或两者。
通过访问每个受影响的 URL 并将 hreflang 注释更改为指向规范 URL 来修复此问题。
自动化您的 Hreflang 标签审核
在了解如何实施 hreflang 标签并修复相关问题后,可以通过自动化 hreflang 审核来更进一步。
这样,您就会在任何问题变得更大之前收到通知。
要自动执行 hreflang 审核,请在站点审核中设置定期报告。
在仪表板的右上角,单击齿轮“设置”符号。
然后,向下滚动并找到“时间表”。
![](https://static.semrush.com/blog/uploads/media/f2/8a/f28a102f2e645e2cac1c87d0359b18fd/9YV53n8IaXVdBmU4r8H2CDjJOd695FlLqQi5fwMjvvSQeaPaaGHxjtEAc-t_3cDojZrw2PTxAka2GeCG4hFQTgLO9Slf3g6KXEEmO0O7e-7IfMjwTGbZu3oj5dGed_UnZrciIOe8SsPHcmiL1eoZcEN2S8E2VerNQ_h3mjlBovpmD4DAP8fPG1vr842JwQ.jpeg)
然后您将看到一个弹出窗口,您可以在其中选择运行审核的频率。
将其设置为您喜欢的日期。然后,勾选“发送电子邮件”选项。
然后点击“保存”。
![](https://static.semrush.com/blog/uploads/media/c5/0e/c50e34b8c53be570f7c2d945a51038c0/_w_hO3V0DFn8xA7x9fbok7C_lmiOkPRyxRKgXWaUjH3BiztWrwFLmQncbqTFGw1NDQNT8-WJjxBYk_BjWqb5zc2CLeXyalZ8R-BRw5sUxb8heJSQ3TYMfm8JX_vhsDRmhhmjZDEkEJhfcVXHGFyhesi3Zus9fXCf30If2EYZk4C0rP1G24vEuBs-hv4K-g.jpeg)
每次抓取后,新问题将显示在仪表板的“国际 SEO ”框中。所以,一定要定期检查。
![](https://static.semrush.com/blog/uploads/media/9d/44/9d4446f6231d86409b745f96d87bc421/Npmb8sIMJtNdmcw06YUrygogQFy0L8eysItX7iwb30CdSYYApeFKi--Fw-eMW-eJewlfP52QfoQIiygWHWuxZtuF7UxBiUN4jZ8N-h1FNRzYhHUkRrBZViB7VVgSi8sHf-8CNNhjGHyLhhcFuJbw0S3YUNDgtfCK5ngDvh-fxY_Cy4cNzGPfxdTX6CCohw.jpeg)
现在,您可以修复出现的任何 hreflang 实施问题,并保持您的 SEO 工作顺利进行。