本教程将引导你从头到尾为多语言网站实现 hreflang 标签。
前置条件
- 一个拥有多种语言内容的网站
- 能够访问网站 HTML 或服务器配置
- 对 HTML 和 sitemap 有基本的了解
第 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[