教程:为多语言网站实现 Hreflang 标签

本教程将引导你从头到尾为多语言网站实现 hreflang 标签。

前置条件

第 1 步:审计你当前的语言版本

import requests
from bs4 import BeautifulSoup

def audit_language_versions(site_url, expected_locales):
    results = []
    for locale in expected_locales:
        url = f"{site_url}/{locale}"
        try:
            response = requests.get(url, timeout=10)
            soup = BeautifulSoup(response.text, "html.parser")
            hreflang_tags = soup.find_all("link", rel="alternate", hreflang=True)
            results.append({
                "locale": locale,
                "url": url,
                "status": response.status_code,
                "existing_hreflang_count": len(hreflang_tags)
            })
        except Exception as e:
            results.append({"locale": locale, "error": str(e)})
    return results

第 2 步:选择实现方式

网站规模 推荐方式
每种语言 < 100 个页面 HTML link 标签
每种语言 100-10,000 个页面 XML sitemap
每种语言 > 10,000 个页面 XML sitemap + 部分 HTML

第 3 步:实现 HTML link 标签

<head>
  <link rel="alternate" hreflang="en" href="https://example.com/en/about" />
  <link rel="alternate" hreflang="de" href="https://example.com/de/ueber-uns" />
  <link rel="alternate" hreflang="fr" href="https://example.com/fr/a-propos" />
  <link rel="alternate" hreflang="ja" href="https://example.com/ja/about" />
  <link rel="alternate" hreflang="x-default" href="https://example.com/en/about" />
  <link rel="canonical" href="https://example.com/en/about" />
</head>

第 4 步:生成带 Hreflang 的 XML Sitemap

import xml.etree.ElementTree as ET

def generate_hreflang_sitemap(pages, locales, base_url):
    urlset = ET.Element("urlset")
    urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
    urlset.set("xmlns:xhtml", "http://www.w3.org/1999/xhtml")
    for page in pages:
        url_elem = ET.SubElement(urlset, "url")
        loc = ET.SubElement(url_elem, "loc")
        loc.text = f"{base_url}/{locales[0]}/{page[