seo-hreflang

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Hreflang & International SEO

Hreflang与国际SEO

Validate existing hreflang implementations or generate correct hreflang tags for multi-language and multi-region sites. Supports HTML, HTTP header, and XML sitemap implementations.
验证现有hreflang实现或为多语言、多地区网站生成正确的hreflang标签。支持HTML、HTTP标头及XML站点地图三种实现方式。

Validation Checks

验证检查

1. Self-Referencing Tags

1. 自引用标签

  • Every page must include an hreflang tag pointing to itself
  • The self-referencing URL must exactly match the page's canonical URL
  • Missing self-referencing tags cause Google to ignore the entire hreflang set
  • 每个页面必须包含指向自身的hreflang标签
  • 自引用URL必须与页面的规范URL完全匹配
  • 缺少自引用标签会导致Google忽略整个hreflang标签组

2. Return Tags

2. 反向引用标签

  • If page A links to page B with hreflang, page B must link back to page A
  • Every hreflang relationship must be bidirectional (A→B and B→A)
  • Missing return tags invalidate the hreflang signal for both pages
  • Check all language versions reference each other (full mesh)
  • 如果页面A通过hreflang链接到页面B,页面B必须反向链接到页面A
  • 所有hreflang关联必须是双向的(A→B且B→A)
  • 缺少反向引用标签会使两个页面的hreflang信号失效
  • 检查所有语言版本是否互相引用(形成完整网状结构)

3. x-default Tag

3. x-default标签

  • Required: designates the fallback page for unmatched languages/regions
  • Typically points to the language selector page or English version
  • Only one x-default per set of alternates
  • Must also have return tags from all other language versions
  • 必填:指定不匹配语言/地区时的备用页面
  • 通常指向语言选择器页面或英文版本
  • 每组替代页面只能有一个x-default标签
  • 所有其他语言版本必须包含指向x-default页面的反向引用标签

4. Language Code Validation

4. 语言代码验证

  • Must use ISO 639-1 two-letter codes (e.g.,
    en
    ,
    fr
    ,
    de
    ,
    ja
    )
  • Common errors:
    • eng
      instead of
      en
      (ISO 639-2, not valid for hreflang)
    • jp
      instead of
      ja
      (incorrect code for Japanese)
    • zh
      without region qualifier (ambiguous — use
      zh-Hans
      or
      zh-Hant
      )
  • 必须使用ISO 639-1双字母代码(例如:
    en
    fr
    de
    ja
  • 常见错误:
    • 使用
      eng
      而非
      en
      (ISO 639-2代码,不适用于hreflang)
    • 使用
      jp
      而非
      ja
      (日语的错误代码)
    • 使用
      zh
      但未添加地区限定符(存在歧义——应使用
      zh-Hans
      zh-Hant

5. Region Code Validation

5. 地区代码验证

  • Optional region qualifier uses ISO 3166-1 Alpha-2 (e.g.,
    en-US
    ,
    en-GB
    ,
    pt-BR
    )
  • Format:
    language-REGION
    (lowercase language, uppercase region)
  • Common errors:
    • en-uk
      instead of
      en-GB
      (UK is not a valid ISO 3166-1 code)
    • es-LA
      (Latin America is not a country — use specific countries)
    • Region without language prefix
  • 可选的地区限定符使用ISO 3166-1 Alpha-2代码(例如:
    en-US
    en-GB
    pt-BR
  • 格式:
    language-REGION
    (语言小写,地区大写)
  • 常见错误:
    • 使用
      en-uk
      而非
      en-GB
      (UK不是有效的ISO 3166-1代码)
    • 使用
      es-LA
      (拉丁美洲不是国家——应使用具体国家代码)
    • 仅使用地区限定符而未添加语言前缀

6. Canonical URL Alignment

6. 规范URL对齐

  • Hreflang tags must only appear on canonical URLs
  • If a page has
    rel=canonical
    pointing elsewhere, hreflang on that page is ignored
  • The canonical URL and hreflang URL must match exactly (including trailing slashes)
  • Non-canonical pages should not be in any hreflang set
  • hreflang标签只能出现在规范URL页面上
  • 如果页面的
    rel=canonical
    指向其他页面,该页面上的hreflang标签会被忽略
  • 规范URL与hreflang URL必须完全匹配(包括尾部斜杠)
  • 非规范页面不应加入任何hreflang标签组

7. Protocol Consistency

7. 协议一致性

  • All URLs in an hreflang set must use the same protocol (HTTPS or HTTP)
  • Mixed HTTP/HTTPS in hreflang sets causes validation failures
  • After HTTPS migration, update all hreflang tags to HTTPS
  • 同一hreflang标签组中的所有URL必须使用相同协议(HTTPS或HTTP)
  • 标签组中混合HTTP/HTTPS会导致验证失败
  • 迁移到HTTPS后,需更新所有hreflang标签为HTTPS协议

8. Cross-Domain Support

8. 跨域支持

  • Hreflang works across different domains (e.g., example.com and example.de)
  • Cross-domain hreflang requires return tags on both domains
  • Verify both domains are verified in Google Search Console
  • Sitemap-based implementation recommended for cross-domain setups
  • hreflang支持跨不同域名使用(例如example.com和example.de)
  • 跨域hreflang要求两个域名都包含反向引用标签
  • 需验证两个域名均已在Google搜索控制台中验证
  • 跨域场景推荐使用站点地图方式实现

Common Mistakes

常见错误

IssueSeverityFix
Missing self-referencing tagCriticalAdd hreflang pointing to same page URL
Missing return tags (A→B but no B→A)CriticalAdd matching return tags on all alternates
Missing x-defaultHighAdd x-default pointing to fallback/selector page
Invalid language code (e.g.,
eng
)
HighUse ISO 639-1 two-letter codes
Invalid region code (e.g.,
en-uk
)
HighUse ISO 3166-1 Alpha-2 codes
Hreflang on non-canonical URLHighMove hreflang to canonical URL only
HTTP/HTTPS mismatch in URLsMediumStandardize all URLs to HTTPS
Trailing slash inconsistencyMediumMatch canonical URL format exactly
Hreflang in both HTML and sitemapLowChoose one method — sitemap preferred for large sites
Language without region when neededLowAdd region qualifier for geo-targeted content
问题严重程度修复方案
缺少自引用标签关键添加指向当前页面URL的hreflang标签
缺少反向引用标签(A→B但无B→A)关键在所有替代页面上添加匹配的反向引用标签
缺少x-default标签添加指向备用/选择器页面的x-default标签
无效语言代码(例如
eng
使用ISO 639-1双字母代码
无效地区代码(例如
en-uk
使用ISO 3166-1 Alpha-2代码
在非规范URL上添加hreflang标签仅在规范URL页面上添加hreflang标签
URL中HTTP/HTTPS不匹配将所有URL统一为HTTPS协议
尾部斜杠不一致与规范URL格式完全匹配
同时在HTML和站点地图中添加hreflang选择一种实现方式——大型网站推荐使用站点地图
需要地区限定符但未添加为地理定位内容添加地区限定符

Implementation Methods

实现方法

Method 1: HTML Link Tags

方法1:HTML链接标签

Best for: Sites with <50 language/region variants per page.
html
<link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
Place in
<head>
section. Every page must include all alternates including itself.
适用场景:每个页面的语言/地区变体少于50个的网站。
html
<link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<link rel="alternate" hreflang="en-GB" href="https://example.co.uk/page" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
放置在
<head>
部分。每个页面必须包含所有替代页面的标签,包括自身。

Method 2: HTTP Headers

方法2:HTTP标头

Best for: Non-HTML files (PDFs, documents).
Link: <https://example.com/page>; rel="alternate"; hreflang="en-US",
      <https://example.com/fr/page>; rel="alternate"; hreflang="fr",
      <https://example.com/page>; rel="alternate"; hreflang="x-default"
Set via server configuration or CDN rules.
适用场景:非HTML文件(PDF、文档等)。
Link: <https://example.com/page>; rel="alternate"; hreflang="en-US",
      <https://example.com/fr/page>; rel="alternate"; hreflang="fr",
      <https://example.com/page>; rel="alternate"; hreflang="x-default"
通过服务器配置或CDN规则设置。

Method 3: XML Sitemap (Recommended for large sites)

方法3:XML站点地图(推荐大型网站使用)

Best for: Sites with many language variants, cross-domain setups, or 50+ pages.
See Hreflang Sitemap Generation section below.
适用场景:包含大量语言变体、跨域设置或页面数量超过50个的网站。
请参阅下方的Hreflang站点地图生成部分。

Method Comparison

方法对比

MethodBest ForProsCons
HTML link tagsSmall sites (<50 variants)Easy to implement, visible in sourceBloats
<head>
, hard to maintain at scale
HTTP headersNon-HTML filesWorks for PDFs, imagesComplex server config, not visible in HTML
XML sitemapLarge sites, cross-domainScalable, centralized managementNot visible on page, requires sitemap maintenance
方法适用场景优点缺点
HTML链接标签小型网站(变体少于50个)易于实现,在源码中可见会使
<head>
部分臃肿,大规模维护困难
HTTP标头非HTML文件适用于PDF、图片等服务器配置复杂,在HTML中不可见
XML站点地图大型网站、跨域场景可扩展,集中管理页面上不可见,需要维护站点地图

Hreflang Generation

Hreflang生成流程

Process

步骤

  1. Detect languages: Scan site for language indicators (URL path, subdomain, TLD, HTML lang attribute)
  2. Map page equivalents: Match corresponding pages across languages/regions
  3. Validate language codes: Verify all codes against ISO 639-1 and ISO 3166-1
  4. Generate tags: Create hreflang tags for each page including self-referencing
  5. Verify return tags: Confirm all relationships are bidirectional
  6. Add x-default: Set fallback for each page set
  7. Output: Generate implementation code (HTML, HTTP headers, or sitemap XML)
  1. 检测语言:扫描网站的语言标识(URL路径、子域名、顶级域名、HTML lang属性)
  2. 映射对应页面:匹配不同语言/地区的对应页面
  3. 验证语言代码:验证所有代码是否符合ISO 639-1和ISO 3166-1标准
  4. 生成标签:为每个页面创建包含自引用的hreflang标签
  5. 验证反向引用:确认所有关联都是双向的
  6. 添加x-default:为每组页面设置备用标签
  7. 输出:生成实现代码(HTML、HTTP标头或站点地图XML)

Hreflang Sitemap Generation

Hreflang站点地图生成

Sitemap with Hreflang

包含Hreflang的站点地图

xml
<?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>https://example.com/page</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
  </url>
  <url>
    <loc>https://example.com/fr/page</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
  </url>
</urlset>
Key rules:
  • Include the
    xmlns:xhtml
    namespace declaration
  • Every
    <url>
    entry must include ALL language alternates (including itself)
  • Each alternate must appear as a separate
    <url>
    entry with its own full set
  • Split at 50,000 URLs per sitemap file
xml
<?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>https://example.com/page</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
  </url>
  <url>
    <loc>https://example.com/fr/page</loc>
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/page" />
    <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
    <xhtml:link rel="alternate" hreflang="de" href="https://example.de/page" />
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/page" />
  </url>
</urlset>
关键规则:
  • 必须包含
    xmlns:xhtml
    命名空间声明
  • 每个
    <url>
    条目必须包含所有语言变体(包括自身)
  • 每个变体必须作为单独的
    <url>
    条目存在,并包含完整的标签组
  • 每个站点地图文件最多包含50,000个URL,超出需拆分

Output

输出内容

Hreflang Validation Report

Hreflang验证报告

Summary

摘要

  • Total pages scanned: XX
  • Language variants detected: XX
  • Issues found: XX (Critical: X, High: X, Medium: X, Low: X)
  • 扫描页面总数:XX
  • 检测到的语言变体数量:XX
  • 发现的问题数量:XX(关键:X,高:X,中:X,低:X)

Validation Results

验证结果

LanguageURLSelf-RefReturn Tagsx-defaultStatus
en-UShttps://...
frhttps://...⚠️
dehttps://...
语言URL自引用反向引用标签x-default状态
en-UShttps://...
frhttps://...⚠️
dehttps://...

Generated Hreflang Tags

生成的Hreflang标签

  • HTML
    <link>
    tags (if HTML method chosen)
  • HTTP header values (if header method chosen)
  • hreflang-sitemap.xml
    (if sitemap method chosen)
  • HTML
    <link>
    标签(若选择HTML方法)
  • HTTP标头值(若选择标头方法)
  • hreflang-sitemap.xml
    (若选择站点地图方法)

Recommendations

建议

  • Missing implementations to add
  • Incorrect codes to fix
  • Method migration suggestions (e.g., HTML → sitemap for scale)
  • 需要添加的缺失实现
  • 需要修复的错误代码
  • 方法迁移建议(例如:从HTML迁移到站点地图以支持大规模场景)