TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 hreflang 标签生成器 · 代码逐个校验

多语言站、外贸站、简繁体分开的站,要用 hreflang 告诉 Google 哪个版本给哪些用户看。语法不难,却很容易写错一点点:en-UK 应该是 en-GB、zh_CN 用了下划线、网址写成相对路径、页面忘了把自己列进去。每行写一个版本,三种写法一次生成,每个错误都告诉你怎么改。

  • 按 ISO 639-1 / 3166-1 校验
  • 标签、sitemap、响应头
  • 本地生成
生成器

列出各语言版本

每行一个版本:语言代码(可带文字或地区),空格,再写完整网址。点「看常见错误」可以看看各种写错的情况会怎么提示。

格式:代码 网址,如 zh-TW https://example.com/zh-tw/。中间用空格、Tab 或逗号都行,可以直接从表格里复制两列。

选填。语言都对不上的用户去哪个页面,通常是语言选择页或英文主站。

版本列表

代码含义网址状态
zh-CN中文(中国)https://www.example.com/zh-cn/有效
zh-TW中文(台湾)https://www.example.com/zh-tw/有效
zh-HK中文(中国香港特别行政区)https://www.example.com/zh-hk/有效
en英语https://www.example.com/en/有效
x-default其他所有用户https://www.example.com/en/有效

检查清单

  • 提示zh-CN, zh-TW, zh-HK 没有不带地区的 zh 版本。Google 建议给其他地区说这种语言的用户一个兜底网址:加一行 zh,或者靠 x-default。
  • 通过4 个语言版本,代码和网址都有效。
  • 提示这 5 行要原样放到清单里的每个网址上。每个页面都要列出自己和其他全部版本;A 页列了 B,B 页却没列 A,Google 会忽略这一对。
HTML <link> 标签
<link rel="alternate" hreflang="zh-CN" href="https://www.example.com/zh-cn/" />
<link rel="alternate" hreflang="zh-TW" href="https://www.example.com/zh-tw/" />
<link rel="alternate" hreflang="zh-HK" href="https://www.example.com/zh-hk/" />
<link rel="alternate" hreflang="en" href="https://www.example.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://www.example.com/en/" />

放进列出的每个页面的 <head>,每页完全相同。

HTTP Link 响应头
Link: <https://www.example.com/zh-cn/>; rel="alternate"; hreflang="zh-CN", <https://www.example.com/zh-tw/>; rel="alternate"; hreflang="zh-TW", <https://www.example.com/zh-hk/>; rel="alternate"; hreflang="zh-HK", <https://www.example.com/en/>; rel="alternate"; hreflang="en", <https://www.example.com/en/>; rel="alternate"; hreflang="x-default"

# Nginx (server / location)
add_header Link '<https://www.example.com/zh-cn/>; rel="alternate"; hreflang="zh-CN", <https://www.example.com/zh-tw/>; rel="alternate"; hreflang="zh-TW", <https://www.example.com/zh-hk/>; rel="alternate"; hreflang="zh-HK", <https://www.example.com/en/>; rel="alternate"; hreflang="en", <https://www.example.com/en/>; rel="alternate"; hreflang="x-default"';

# Apache (.htaccess, mod_headers)
Header set Link "<https://www.example.com/zh-cn/>; rel=\"alternate\"; hreflang=\"zh-CN\", <https://www.example.com/zh-tw/>; rel=\"alternate\"; hreflang=\"zh-TW\", <https://www.example.com/zh-hk/>; rel=\"alternate\"; hreflang=\"zh-HK\", <https://www.example.com/en/>; rel=\"alternate\"; hreflang=\"en\", <https://www.example.com/en/>; rel=\"alternate\"; hreflang=\"x-default\""

给 PDF 等非网页文件用,附 Nginx(宝塔面板可用)和 Apache 写法。

XML sitemap
<?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://www.example.com/zh-cn/</loc>
    <xhtml:link rel="alternate" hreflang="zh-CN" href="https://www.example.com/zh-cn/"/>
    <xhtml:link rel="alternate" hreflang="zh-TW" href="https://www.example.com/zh-tw/"/>
    <xhtml:link rel="alternate" hreflang="zh-HK" href="https://www.example.com/zh-hk/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/"/>
  </url>
  <url>
    <loc>https://www.example.com/zh-tw/</loc>
    <xhtml:link rel="alternate" hreflang="zh-CN" href="https://www.example.com/zh-cn/"/>
    <xhtml:link rel="alternate" hreflang="zh-TW" href="https://www.example.com/zh-tw/"/>
    <xhtml:link rel="alternate" hreflang="zh-HK" href="https://www.example.com/zh-hk/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/"/>
  </url>
  <url>
    <loc>https://www.example.com/zh-hk/</loc>
    <xhtml:link rel="alternate" hreflang="zh-CN" href="https://www.example.com/zh-cn/"/>
    <xhtml:link rel="alternate" hreflang="zh-TW" href="https://www.example.com/zh-tw/"/>
    <xhtml:link rel="alternate" hreflang="zh-HK" href="https://www.example.com/zh-hk/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/"/>
  </url>
  <url>
    <loc>https://www.example.com/en/</loc>
    <xhtml:link rel="alternate" hreflang="zh-CN" href="https://www.example.com/zh-cn/"/>
    <xhtml:link rel="alternate" hreflang="zh-TW" href="https://www.example.com/zh-tw/"/>
    <xhtml:link rel="alternate" hreflang="zh-HK" href="https://www.example.com/zh-hk/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://www.example.com/en/"/>
  </url>
</urlset>

每个版本一个 <url>,每个都列出全部版本。

全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

分享这组输入:数值写在链接的 # 后面,不会发到服务器。

版本 v1.0更新于 更新记录

结果怎么看

生成器告诉你的几件事

表格显示每个代码被怎么理解;检查清单解释哪里错了、哪里值得再看一眼;三个代码块是同一组内容的三种写法。

代码和含义

有效的代码会显示成通行写法,并写出它的含义,方便发现「写得对但不是你想要的」:uk 是乌克兰语,se 是北萨米语,单独的 DE 是德语而不是德国。

错误和未生成的行

Google 会忽略的代码(en-UK、jp、zh_CN、es-419)和相对网址都算错误。这些行不会进入下面的代码,避免你复制出无效的标签;提示里会给出正确写法。

简体、繁体怎么写

zh-CN、zh-TW、zh-HK 按地区区分;zh-Hans、zh-Hant 按简繁字形区分,不限地区。只有一个繁体站同时给台湾和香港用,写 zh-Hant 更准确;分开做了才分别写 zh-TW、zh-HK。

三种写法

标签、sitemap、响应头效果相同,每个页面选一种即可。页面多用 sitemap,模板不用动;PDF 用响应头;其余用标签最直接。

生成器只能检查你给的代码和网址,看不到清单里的每个页面是否真的放了同一组标签;这种「回链」检查需要抓取线上页面。另外,百度不使用 hreflang,中文站在百度的表现不受它影响。

怎么用

三步

两个版本和两百个版本,用法都一样。

  1. 1

    列出全部版本

    这个页面的每个语言 / 地区版本各写一行,包括你正在改的这一页。手上有网址对照表的话,直接从表格复制两列粘贴。

  2. 2

    处理标出的问题

    从上往下看检查清单。错误表示那一行没生成;提示是建议,比如补一个不带地区的兜底版本或 x-default。

  3. 3

    复制一种写法

    把标签放进每个页面的 head,或者把 sitemap 片段加进站点地图,或者在 Nginx / 宝塔面板里配置响应头。同一组内容放到每个版本上。

规则

有效的 hreflang 值长什么样

出自 Google 关于多语言版本的文档。值不区分大小写;通行写法是语言小写、文字首字母大写、地区大写。

  • 语言:ISO 639-1 两字母;地区:ISO 3166-1 两字母;文字:ISO 15924 四字母
  • 只写地区无效;只写语言可以
  • 网址必须是完整地址,每个版本都要列出自己和其他全部版本
有效和无效的 hreflang 写法示例
写法有效吗原因
zh有效中文,不限地区和字形
zh-CN、zh-TW有效中国大陆中文、台湾中文
zh-Hans、zh-Hant有效简体中文、繁体中文
x-default有效语言都对不上时的兜底
zh_CN无效下划线,应为 zh-CN
cn、jp无效国家代码;中文是 zh,日语是 ja
zh-CHS无效旧写法,应为 zh-Hans
en-UK无效UK 是保留代码,英国是 GB
CN无效只有地区,没有语言
实际改一遍

「常见错误」清单逐行改

点「看常见错误」按钮后,清单里每一行的检查结果和改法。

示例清单里的常见 hreflang 错误和改法
行写的是问题改成
1en-UK保留的地区代码en-GB
2jp国家代码当成了语言代码ja
3zh_CN用了下划线zh-CN
4es-419数字地区(拉丁美洲)es,或按国家写 es-MX、es-AR……
5de /de/相对网址https://www.example.com/de/
6–7en-us 两次同一代码两个网址en-US 只保留一个网址

七行里照原样只有一行能用,而只有一个版本的 hreflang 等于没写。改完后是六个版本;再加一个 x-default,把同一组标签放到这六个页面上。

常见错误

Google 为什么不认你的 hreflang

代码写错很容易查出来;下面这些问题语法都对,照样会让设置失效。

没有回链

中文页列了英文页,英文页却没列回中文页。Google 需要双向互指,否则忽略这一对。

忘了列自己

每个版本都要把自己的网址写进去。模板里只列「其他语言」的写法,会让每一页都出这个错。

指向跳转或 noindex 的网址

hreflang 里的网址应该是最终的、可收录的规范网址。会 301 跳转或带 noindex 的网址会拖累整组设置。

当成自动跳转用

hreflang 只影响搜索结果里显示哪个网址,不会把访客转走。按 IP 或浏览器语言自动跳转,反而可能让 Google 抓不到其他版本。

常见问题

hreflang 常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

hreflang 是什么?

一种标注,告诉搜索引擎这个页面还有其他语言或地区的版本,以及哪个是哪个。Google 据此在搜索结果里显示对应的版本,比如给香港用户显示繁体页面。它只是提示,不是跳转。

百度认 hreflang 吗?

百度没有关于 hreflang 的公开文档,可以认为不使用。中文站在百度的收录和排名不受它影响;hreflang 主要是给 Google(以及 Yandex 等)看的,做外贸站、出海站时才需要认真配置。

用 HTML 标签、sitemap 还是响应头?

任选一种,Google 认为三者等效,同时用并不会更好。小站用标签最简单;大站用 sitemap,模板不用改;PDF 等非网页文件用响应头。

x-default 是什么?

给语言和地区都对不上的用户准备的网址,通常是语言选择页或英文主站。它是选填的,但不写的话,这些用户落到哪个版本由 Google 决定。

简体中文写 zh-CN 还是 zh-Hans?

都有效。zh-Hans / zh-Hant 按简繁字形区分,不限地区;zh-CN / zh-TW / zh-HK 按地区区分。如果只有一个简体站给所有地区的人看,zh-Hans 或直接写 zh 更准确;简体、台湾繁体、香港繁体分开做了,就分别写 zh-CN、zh-TW、zh-HK。

每个页面都要列出自己吗?

要。Google 文档明确要求每个语言版本都列出自己和其他所有版本,每一页放的是完全相同的一组。

hreflang 可以跨域名吗?

可以。各版本可以在不同域名上,比如 example.com 和 example.cn,只要每个页面都互相指回来。用 Search Console 监控的话,每个域名都要验证。

我的清单会上传吗?

不会。校验和生成都在你的浏览器里完成。复制分享链接时,清单写在网址 # 号后面,浏览器不会把这一段发给服务器。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie