# 保哥笔记 — 国际SEO
> 本分片含 11 篇文章,按发布日期倒序。全部分片索引见 https://zhangwenbao.com/llms-full.md
**站点**:https://zhangwenbao.com/
**分类**:国际SEO
**生成**:2026-09-12 13:06:31 CST
---
## hreflang互指对不上,多半是另一边先改的
- URL:https://zhangwenbao.com/hreflang-cluster-reciprocity-third-party-audit.html
- 分类:国际SEO
- 发布:2026-08-21 | 更新:2026-08-22
- 摘要:这套声明的正确性不由你单独决定。你那一半写得再好,对面那个页面不把你列回来,整组关系就不成立。
- 关键词:技术SEO,hreflang,国际SEO,多语言
> **TLDR**:摘要:从73个多语言站的首页抓出2529条语言版本声明,再顺着这些声明实抓258个目标页,逐个检查对面有没有把你列回来。240个能打开的目标页里,211个两侧集群完全一致,站级口径下14个站(19.2%)至少有一个成员对不上。更值得看的是另外两个数:同一个地址在两侧被标成不同语言代码的比例高达19.8%,绝大多数集中在谁该当默认版本这一件事上;18条打不开的目标里换个浏览器身份重抓,7条立刻变成正常。文中给出跨域集群的规模、跳转造成的错位与按责任方划分的修复顺序。
> 摘要:从73个多语言站的首页抓出2529条语言版本声明,再顺着这些声明实抓258个目标页,逐个检查对面有没有把你列回来。240个能打开的目标页里,211个两侧集群完全一致,站级口径下14个站(19.2%)至少有一个成员对不上。更值得看的是另外两个数:同一个地址在两侧被标成不同语言代码的比例高达19.8%,绝大多数集中在谁该当默认版本这一件事上;18条打不开的目标里换个浏览器身份重抓,7条立刻变成正常。文中给出跨域集群的规模、跳转造成的错位与按责任方划分的修复顺序。
八月十九日有一组数据在圈子里传得挺快:某个大型论坛站在某AI搜索里的引用份额,从3.83%掉到0.52%,跌了86.4%。有人把原因归到八月八日那次检索方式变更上,但仔细对一下时间线这个解释并不成立 (https://www.searchenginejournal.com/why-reddits-chatgpt-citation-drop-isnt-fully-explained/586479/)——变更发生在八日,份额是十四日之后才塌下去的。
这件事里最让人不舒服的不是掉了多少,而是掉的原因在别人家里,而对方没有义务告诉你。你能做的只有事后拿数据反推,还未必推得对。
网站上有一类声明天生就是这个处境:它的正确性不取决于你自己写得对不对,取决于另一个页面怎么写。那个页面可能归另一个国家的团队,可能归一家代理商,甚至可能压根不是你公司的资产。
语言版本声明 (https://zhangwenbao.com/international-seo-hreflang-complete-guide.html)就是最典型的一个。保哥把这批多语言站的首页拉下来,顺着它们声明的每一条链路往对面走,看看对面认不认这门亲戚。
## 你写的那一半对了,另一半算数吗?
先把规矩说清楚。这套声明的核心要求不是你指对了人,而是同一组语言版本里的每一个页面,都必须列出完全相同的一整套地址,并且要把自己也列进去。
## 它是少数几个必须双向成立的声明
网页上大多数声明是单向的:你写规范网址,你写索引指令,你写修改时间,写完就生效,跟别的页面没关系。
语言版本声明不一样。你在中文页上写英文版在那儿,英文页上必须也写中文版在这儿。少了任何一边,搜索引擎都不会把这两个页面认成一组——它没法确认这门亲戚是不是你单方面攀的。
这个设计有它的道理:如果单向就算数,任何人都可以在自己站上声明你是他的某语言版本,然后蹭走一部分流量。双向要求 (https://zhangwenbao.com/hreflang-implementation-return-tags-x-default-canonical-mistakes.html)把这条路堵死了,代价是维护成本翻倍。
## 翻倍还只是最好的情况
实际成本远不止翻倍。一个站有12个语言版本,那就是12个页面每个都要列出完整的12条。新加一门语言,要改的不是1个页面,是13个。
如果这12个版本跑在同一套模板上,改起来还算容易;如果它们分属不同的市场团队、不同的建站系统、甚至不同的域名 (https://zhangwenbao.com/international-seo-domain-structure-cctld-subdirectory-subdomain.html),这件事就变成了一次跨组织协作。
## 算一笔账:一个成员掉队,损失面有多大
把这件事量化一下会更有体感。假设一个站有8个语言版本,每个版本有5000个页面,也就是4万个页面组成8000组关系。
现在其中一个语言版本的模板漏了自指。后果不是那5000个页面出问题,而是全部8000组关系里,每一组都少了一个成员——剩下7个版本之间的关系仍然成立,但它们跟那一个版本之间的定向全部作废。
换个更糟的情形:漏的不是自指,而是那个版本的模板压根没输出这套声明。这时候它自己的5000个页面完全脱离集群,其他7个版本指着它的那8000条声明也全部变成单向,等于白写。
这就是为什么这件事值得单独查一遍:一个模板文件里的一行,能一次性废掉整个站的语言定向。而它出错时页面照常打开,任何常规监控都不会响。
## 这次怎么查的
数据抓于2026年8月21日,样本是168个海外品牌独立站的首页,其中73个站写了语言版本声明。做法分三步。第一步,从这73个站的首页里把所有语言版本声明抽出来,一共2529条。第二步,每个站挑4条目标地址,实际抓一遍,一共258个页面。第三步,解析目标页自己的声明,跟源页那一套做集合比对。
比对的判据严格按规范来:两侧列出的地址集合应该完全相同,且各自都包含自己。差一条就算对不上。
## 这次没算进去的几件事
三类情况被排除在外。
一是只在首页上做的抽查。一个站的语言关系是逐页成立的,首页对得上不代表商品页也对得上;反过来也一样。所以文中的站级出错率是下限,真实情况只会更高。
二是写在清单文件里的那种表达方式。规范允许把同样的关系写进站点地图 (https://zhangwenbao.com/ai-script-hreflang-xml-sitemap-multilingual.html),这次只解析了页面上的写法。有些站两种都用,也有些站只用后一种——后者在本文的口径里会被记成没写,这一点要打个折扣看。
三是响应头里的写法。它同样合法,但实际使用极少,这批样本里一条都没遇到。
还有一层边界要交代清楚:这类声明的正确性会随对面团队的每一次改版而变,所以本文的每个数字都只对2026年8月21日那一刻成立。这不是免责声明,而是这件事的性质决定的——出错在这里是单向累积的,没有任何机制会把它自动修回来。同一批站半年后再抓一遍,站级出错率只会比19.2%更高,除非中间有人专门去核对过。这也是为什么下文把核对挂在触发点上,而不是建议你每季度跑一次。
## 73个站的集群到底有多大、跨得有多远?
先看静态的那一面,也就是这些站自己写了些什么。
## 规模:中位数15条,最大259条
73个站一共写了2529条声明,每站中位数15条,最大的一个站写了259条。写得多的几个站分别是259、236、202、190、116、112、110条。
259条意味着什么?意味着这个站有两百多个语言地区组合 (https://zhangwenbao.com/hreflang-region-code-declared-vs-real-pages.html),而每一个组合对应的页面上,都得原样再写一遍这259条。整个集群的维护面是259乘259。
## 默认版本:87.7%的站声明了
这套声明里有一个特殊值,用来指定当用户的语言不在你的列表里时该去哪儿。73个站里64个写了它,占87.7%。
这个覆盖率算高的。但后面会看到,恰恰是这个特殊值成了两侧最容易吵架的地方。
## 条数最少的那批站,未必是做得差
73个站的中位数是15条,但分布很偏:有一批站只写了两三条。
看下去会发现这批站多数是双语站——英语加一门本地语言,或者英语加中文。它们的集群小,维护面自然也小,出错的机会跟着变少。
这一点值得给正在扩语言的团队提个醒:每加一门语言,维护面不是线性增长而是平方增长。三门语言是9条关系,十门语言就是100条。决定加不加一个市场 (https://zhangwenbao.com/niche-market-selection-ai-mode-7step-12week-decision.html)时,这笔维护成本很少被算进去,而它是要一直付的。
## 跨域:277条指向别人的域名
2529条里有277条指向的不是本站的域名,占11.0%,涉及21个站,一共124个不同的外部主机。
形态分几种。最常见的是国别域名矩阵:主站在通用域上,各个市场用各自国家的域名,比如同一个鞋类品牌指向新西兰、澳大利亚、英国、韩国、科威特五个国别域。
其次是中国单独一套:有的品牌把中国站放在另一个域名下 (https://zhangwenbao.com/china-vs-overseas-hosting-for-cross-border-independent-site.html),从主站指过去。样本里有几个都是这个形态。
## 最有意思的一条跨到了别的公司
那个鞋类品牌的日语版本,指向的域名既不是它的主域,也不是它的国别域,而是一家日本本地公司的域名——那是它在日本市场的经营方。
这一条把本文的主题摊得非常清楚:这个页面上的声明能不能长期成立,取决于另一家公司的网站怎么改。他们换个建站系统、调一次地址结构、或者干脆终止合作,你这边不会收到任何通知。
## 顺手说一句:跨域这件事本身没错
容易把跨域读成不规范,其实规范里明确允许。真实世界的多语言站有大量正当理由要用不同域名——商标在某些国家归别人所有,某些市场必须用本地域名才有信任度,某些国家的支付通道只认本地主体。
真正决定难度的不是域名,是那一头归谁管。同一个团队维护五个国别域,改起来跟改一个站没区别;不同公司各管一头,哪怕只有两个域也很难同步。看域名判断风险会看错,要看的是组织边界。
## 语言代码本身写错的不多
顺手也查了代码写法。明显不合规的只有七条:把国家码当语言码用的两条,把语言写成不存在的两字母的一条,还有几条把语言和地区写反或者重复。
这里要坦白一个自己的口径问题:第一版校验把中文的繁简写法判成了不合规,因为我的规则只认两位国家码,没考虑到语言标签规范里语言与地区之间还能插一层文字子标签 (https://www.rfc-editor.org/rfc/rfc5646.html)。这类误报的成因是校验规则比规范本身更窄,属于写检查脚本时最常见的一种错。修正之后,真正的代码错误就剩那七条。
## 抓到的240个目标页里,有多少真的把你列了进去?
这是本文的核心实验。258个目标地址实抓下来,240个正常打开,逐个解析它们自己的声明再跟源头比对。
## 两侧完全一致的有87.9%,对不上的12.1%
240个目标页里,6个页面一条语言版本声明都没有,占2.5%。剩下234个有声明的,211个(90.2%)的集合与源页完全相同。以240为分母算,完全一致的是87.9%。
集合重合度的分布是这样的:
两侧集群的重合度 | 页面数 | 占比 |
完全相同 | 211 | 90.2% |
九成以上但不完全一样 | 8 | 3.4% |
五成到九成 | 13 | 5.6% |
一成到五成 | 1 | 0.4% |
不到一成 | 1 | 0.4% |
重合度中位数是100%,四分之一分位也是100%。最低的一个只有1.2%——那意味着两侧几乎在说两件不相干的事。
## 自指:95.0%的目标页把自己列了进去
规范要求每个成员都要包含自己。240个目标页里228个做到了,占95.0%。剩下12个漏了自己,涉及少数几个站。
漏掉自指的后果比想象中大:搜索引擎会认为这个页面不属于任何一组,于是它跟其他语言版本之间的关系全部作废,哪怕别人都指着它。
## 站级看,五分之一的站有问题
把页面级结果收到站级:73个站里14个至少有一个成员对不上,占19.2%。
这个口径比页面级更有意义。原因是一组语言版本是共同体,只要其中一个页面掉队,那一整组的关系在搜索引擎那边就不完整。页面级的87.9%听着还行,翻译成站级就是每五个做多语言的站里有一个,某些页面上的语言关系根本没生效。
## 出问题的站各有各的形态
问题形态 | 典型站数 | 说明 |
目标页集群与源页不一致 | 9个站 | 两边列的地址不是同一套 |
目标页没把自己列进去 | 3个站 | 缺自指,整组关系作废 |
目标页一条声明都没有 | 4个站 | 对面根本没参与这套机制 |
最整齐的一个例子是某家居品牌:抓到的4个目标页全部一条声明都没有。这不是漏写,更像是那几个国家的站点由完全独立的系统在跑,压根不知道主站在指着它们。
## 那6个没有任何声明的页面,值得单独想一想
集群对不上还算有救——两边都参与了这套机制,只是内容有出入。目标页一条声明都没有是另一种情况:对面根本没上这条船。
这6个页面里4个来自同一个家居零售巨头,剩下两个分别来自一个服装品牌和一个小站。前者的形态最值得注意:主站的清单里认认真真列了几十个国家,而被列进去的那几个国家站,页面上干干净净什么都没有。
合理的推测是这些市场站建站更早、或者由本地团队独立采购的系统,从来没有接入过总部这套国际化配置。主站那边加清单时只需要在自己的模板里填地址,不需要对面配合,所以这件事可以做完一半就上线。
这也解释了为什么这类问题能长期存在:做一半也能上线,而上线之后没有任何东西会告诉你另一半没做。
## 非200的那18条,有几条是真的坏了?
258个目标里有18条没能正常打开。这个数字不能直接当失败率用,必须先做一步。
## 为什么要换个身份再抓一遍
跨站抓取有一条铁规矩:一次失败可能说的是这个地址坏了,也可能说的是这台机器不受欢迎。这两件事的处置方式完全不同,混在一起报会得出错误的结论。
所以那18条全部换成普通浏览器身份 (https://zhangwenbao.com/robots-allow-vs-actual-delivery-bot-identity-audit.html)重抓了一次。
## 7条立刻变成正常
结果是18条里7条换个身份就打开了,占38.9%。其中某个家电品牌的3个欧洲语言页面,某个户外品牌的4个欧洲页面,全部属于这一类。
还有1条反过来,原本返回拒绝的换了身份变成完全连不上——这类抖动在跨境链路上很常见。
不做这一步,这份报告里的失败率 (https://zhangwenbao.com/third-party-seo-tool-data-accuracy-estimation-methodology.html)会写成7.0%;做完之后是4.3%。虚高了六成。
## 剩下那11条是真问题,而且形态很说明问题
剩下的11条里,最值得说的是三条来自同一个珠宝品牌:它的欧洲站把保加利亚、爱沙尼亚、拉脱维亚三个市场的英语版本,指向了自己的中国站域名。而那个中国站上,这三个地区页面全部返回未找到。
这一条几乎是本文主题的标本:声明写在欧洲团队的模板里,被指的页面归中国团队管,而中国团队做地区页面调整时,不会有任何机制去通知欧洲团队。
另外两条来自一个服装品牌:它声明了香港和俄罗斯两个版本,前者返回未找到,后者返回服务不可用。俄罗斯那条尤其典型——那是一个几年前就退出的市场,页面早就不提供服务了,而首页上的声明还在。
还有三条来自一个美妆零售站,它的罗马尼亚、法国、芬兰版本对两种身份都返回拒绝,看起来是地区级的访问限制。这类严格说不算坏,只是从我这个位置进不去。
## 地区限制这一类要单独想清楚
访问限制看起来是最无害的一类:真实用户在当地能打开,只是我这台在境内的机器进不去。但它有一层容易被忽略的影响。
搜索引擎的抓取程序也不是从各国均匀发起请求的,它的出口位置相对集中。如果一个页面对大部分位置都不接待 (https://zhangwenbao.com/waf-bot-management-search-ai-crawler-misblock-diagnosis.html),那么它被抓到、被理解、被纳入语言关系的机会就会下降。
所以这一类的处置不是修声明,而是回去问一句:这个访问限制策略是有意为之,还是防护规则误伤?这两种情况的答案完全不同,而多数团队从没被问过这个问题。
## 把这11条按责任方分个类
形态 | 条数 | 该找谁 |
被指的页面确实没了 | 4 | 对面团队,或者把这条声明删掉 |
市场已退出但声明还在 | 1 | 自己,属于收尾没做完 |
地区级访问限制 | 3 | 不用管,但要知道搜索引擎那边也可能进不去 |
限流或网络抖动 | 2 | 换个时间再验一次 |
连不上 | 1 | 同上 |
## 同一个地址在两边被标成不同的语言,占多少?
集合比对只回答了地址对不对得上,还有一个更细的问题:同一个地址在两侧被贴的标签是不是同一个。
## 8894次比对里,1758次标法不同
做法是把两侧共同拥有的每一个地址挑出来,看它在源页和目标页上各被标成了什么。一共比了8894次,其中1758次标法不同,占19.8%。
这个比例远高于集合对不上的比例。也就是说,两侧列的地址往往是同一套,但对每个地址是什么语言的理解并不一致。
## 绝大多数争的是同一件事:谁该当默认版本
把这1758次按标法组合排个序,头部几组是这样的:
源页标法 → 目标页标法 | 次数 |
默认版本 → 美式英语 | 43 |
通用英语 → 默认版本 | 40 |
美式英语 → 默认版本 | 31 |
默认版本 → 通用英语 | 17 |
默认版本 → 英式英语 | 9 |
奥地利德语 → 德国德语 | 8 |
前五组全部围绕同一个地址:那个既是英语版又被当成默认落点的页面。源页说它是默认版本,目标页说它是某个具体的英语 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html);或者反过来。
## 为什么这一处最容易吵
因为默认版本这个值在语义上是特殊的:它不描述这个页面是什么语言,它描述的是当没有更好的匹配时该去哪儿。这是一个关于整组的决策,不是关于单个页面的属性。
一个页面可以既是美式英语版,又同时是整组的默认落点,规范也允许同一个地址被写两条声明来同时表达这两件事。问题在于,很多站只写了其中一条,而写哪一条取决于当初是谁在改这个模板。
英文站的人觉得它就是英语版;负责国际化的人觉得它是兜底页。两边都不算错,凑到一起就对不上。
## 另一组更像是整体平移出了错
还有一组很整齐的:某个站的波兰英语版,在目标页上分别被标成了比利时英语、希腊英语、法国英语、立陶宛英语、葡萄牙英语,各4次。这些地区码本身全部合法,都能在官方的语言子标签登记表 (https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry)里查到,所以任何语法检查都不会报错。
这个形态不像人手写错,更像模板在渲染时把地区变量取错了——每个国家的页面都把这条声明贴上了自己所在国家的地区码。一处模板逻辑的偏差,会在整组里复制出几十条错误声明。
## 标法不一致到底要不要紧
要紧程度介于中间。搜索引擎在处理这类冲突时通常会取更保守的解释,也就是把有分歧的那条声明忽略掉,其余的照常生效。所以后果不是整组失效,而是有分歧的那个语言版本失去了定向 (https://zhangwenbao.com/hreflang-alternate-url-alias-not-indexed.html)。
但默认版本那一处是例外。如果整组都说不清谁是兜底,那么当用户的语言不在列表里时,搜索引擎只能自己挑一个——而它挑的往往不是你想要的那个市场。
## 怎么把默认版本这件事一次定死
内部先回答三个问题,答完就不会再吵。
第一,如果一个用户的语言和地区都不在你的清单里,你希望他看到哪个页面?多数品牌的答案是英语总站,少数会选主力市场的站。
第二,那个页面本身是不是也代表一个具体的语言地区?如果是,就要写两条声明——一条说它是某语言版本,一条说它是整组的兜底。这两条并不冲突,规范允许。
第三,这个决定怎么传达给所有市场团队?口头说没用,最好是写进那份共用的模板变量或者配置文件里,让各站取同一个值。
第三问答不上来,前两问答得再清楚也会在半年内重新走样。
## 声明的地址和最终落地的地址是同一个吗?
还有一层错位不在声明里,在链路上。你写的地址能打开,但打开之后已经不是它了。
## 240个正常打开的目标里,32个跳到了别处
把最终落地地址跟声明地址逐条比,32条不一样,占13.3%,涉及12个站。多数站是4条全中——说明这是站点级的跳转规则,不是个别页面的问题。
## 为什么跳转在这件事上格外要命
假设你在中文页上声明德语版在某个地址,而那个地址会把访客跳到另一个地址。那么搜索引擎抓到的是跳转后的页面,而跳转后的页面上列的是它自己那一套地址——里面很可能没有你声明的那个原地址。
结果就是:你指的那个门牌号有人住,但住的人说自己不认识你。这一类错位在集合比对里会表现成两侧对不上,但根因不在任何一侧的声明,在中间那道跳转。
## 常见的三种跳转成因
第一种是地区探测跳转 (https://zhangwenbao.com/international-seo-ip-redirect-geolocation-language-switcher-ux.html):站点按访客的网络位置自动分流。这类跳转对搜索引擎特别不友好,因为抓取程序的位置通常在少数几个地方,它永远只能看到其中一个版本。
第二种是地址结构改版遗留:语言目录从一种写法换成另一种,老地址做了跳转,而声明里还写着老地址。
第三种是尾斜杠、大小写、参数这类归一化跳转 (https://zhangwenbao.com/url-path-normalization-case-slash-duplicate-seo.html)。这类无害,但会让机械比对报出一堆假问题——所以做比对时必须先做地址归一化,否则你会看到一份全是噪声的报告。
## 本文的处理办法
这次比对前先做了归一化:统一去掉协议、统一去掉开头的通用子域、去掉尾斜杠、去掉锚点和查询参数、统一转小写。做完这一步之后剩下的32条,是真的跳到了不同路径上。
## 跨域那277条,另一头到底在谁手里?
跨域是本文主题最直白的形态:声明的另一头写着别人的域名。这一节把这277条拆开看。
## 21个站,124个外部主机
写了跨域声明的站有21个,占73个站的28.8%。它们一共指向124个不同的外部主机。
规模最大的几个:某家居零售巨头指向六个以上国别域,某北欧礼品连锁指向阿联酋、印尼、韩国、科威特、土耳其五个市场的独立域,某鞋类品牌指向六个国别域外加一个代理商域。
## 按另一头归谁管,可以分成三档
档位 | 形态 | 能不能推得动 |
同一个团队的不同域 | 国别域名矩阵,同一套模板 | 能,改一次模板全部生效 |
同一家公司的不同团队 | 中国站、日本站单独一套系统 | 难,要走跨部门流程 |
不同的公司 | 代理商、合资方经营的市场站 | 很难,要走商务沟通 |
样本里三档都有。前面提到的那个日语版指向本地经营方的例子属于第三档,而那三条指向中国站却打不开的属于第二档。
## 124个外部主机里,顶级域的分布很说明问题
把这124个主机按顶级域归类,能看出这些站的国际化策略。
数量最多的是国家顶级域,覆盖从北欧到东南亚到中东的几十个市场。第二类是在通用域上开的地区子域 (https://zhangwenbao.com/subdomain-vs-subdirectory-seo-link-equity-domain-authority-transfer-decision.html),比如某电商平台给德语区、法语区各开一个。第三类最少,也最有意思:跟主站毫无字面关系的独立品牌域,也就是代理商或者合资方那种。
这个分布对应着三种截然不同的维护难度,而它们在页面源码上长得一模一样——都是一行声明,看不出背后隔着几个组织。
所以做审计时最好先做一件事:把所有跨域目标按注册主体归个类 (https://zhangwenbao.com/domain-extractor-etld-root-domain-extraction-guide.html),标上归谁管。这份归类表做一次能用很久,也是后面所有沟通的底稿。
## 一个负结果:跨域不等于跨平台
本来预期跨域声明的另一头会跑在完全不同的技术栈上,那样问题会更严重。实际测下来不是这样。
把39个能拿到响应头的跨域目标跟源站首页做平台指纹对照,39个全部与源站相同,一个例外都没有。
这说明多数国别域只是同一套系统的不同门牌,技术上是通的。所以真正的障碍不是技术,是组织——同一套系统,两个团队,各自有各自的发布节奏。
## 集群大小不对称的三个例子
还有一类信号能直接看出两侧脱节:两边列的条数根本不一样。
某鞋类品牌源页列了86条,目标页只列71条,少了15条;某平台源页66条、目标页71条,反而多了5条;最悬殊的一个是源页列了35条,目标页只列3条。
差5条可能是时间差——一边刚加了新市场,另一边还没同步。差32条就不是时间差了,那是两边压根用的不是同一套清单。
## 把这套关系挪到清单文件里,是不是更省事
规范提供了第二种表达方式 (https://zhangwenbao.com/hreflang-generator-sitemap-return-tag-bidirectional-guide.html):把语言版本关系写进站点地图,每个地址下面挂上它的所有兄弟版本,跟写在页面上的效果等价。清单文件本身的结构与扩展方式 (https://www.sitemaps.org/protocol.html)决定了这种写法必须由程序生成,手写基本不现实。
这个方案在大集群上有明显优势。站点地图由程序生成,每次导出都会重新算一遍,天然带一个触发点;而模板里那几行是静态的,除非有人主动去改,否则永远不变。前面几节量出来的那些问题,本质上都来自后者的这个特性。
它的代价有三条。一是可读性差,出问题时不能靠打开页面源码看一眼就定位;二是排查工具支持不如页面写法普遍;三是它只解决你自己那一半的维护问题,对面不列你,写在哪儿都不成立。
务实的组合是:自己这边用清单文件生成,同时保留页面上的写法做冗余,两边由同一个数据源产出。这样既有触发点,又不损失可排查性。
## 为什么这套声明比别的声明更容易坏?
把前面几节的数字放到一起,能看出一条共同的线索。这一节把它说清楚。
## 它的正确性不由你单独决定
规范网址、索引指令、修改时间、资源提示,这些声明有一个共同点:写在你的页面上,由你的系统生成,正确与否你自己说了算。它们会失效,但失效的原因通常在你这边。
语言版本声明是另一类。你把自己那一半写得完美无缺,只要对面那个页面没把你列回来,这一组关系就不成立。你能控制的是必要条件,充分条件在别人手里。
## 更新这件事没有触发点
再看它什么时候该改。新增一个市场、下线一个市场、某个国家站换地址结构、某个页面被合并——这四件事发生时,整组所有页面的声明都应该跟着改。
问题是这四件事都不发生在维护声明的那个人手里。新增市场是业务决策,下线市场是财务决策,换地址结构是那个国家团队的技术决策。没有任何一件会自动变成一张改声明的工单。
那三条指向中国站却打不开的声明,就是这样来的:中国团队调整了地区页面,这个动作在他们那边是完全正常的一次改版,没有任何理由去通知欧洲团队。
## 坏了之后没有任何报错
第三个条件是失效完全静默。页面照常打开,用户照常购物,后台不会亮红灯。唯一的表现是搜索引擎在某个市场把错的那个语言版本排了上去,而这件事很难被归因到具体某一条声明 (https://zhangwenbao.com/indexed-ranked-traffic-three-layer-seo-diagnosis.html)。
三个条件凑齐——正确性依赖外部、更新没有触发点、失效没有报错——这套声明的长期状态几乎注定是慢慢烂掉。样本里19.2%的站级出错率,还是在只抽查首页的情况下量出来的。
## 跟另外两类失效的区别
类型 | 失效原因 | 能不能自己修 |
字段接错了触发源 | 该跟内容走,实际跟生成程序走 | 能,改自己的导出逻辑 |
压根没有触发源 | 写进模板之后再没人碰 | 能,加一道自动检查 |
触发源在别人手里 | 对方改了不通知你 | 不能,只能自己去查 |
前两类的解法都是往自己的流程里加东西。第三类不行——你没法在别人的发布流程里加检查点,只能在自己这边加一道定期核对。
## 还有一个常被忽略的相互作用
这套声明跟规范网址那一套是有交互的,而且交互的方式经常出人意料。
规则是这样:如果一个页面的规范网址指向别的地址 (https://zhangwenbao.com/google-canonical-url-selection-logic.html),那么它的语言版本声明会被连带处理到那个地址上。所以当某个语言版本的规范网址被误设成英语版时,等于告诉搜索引擎这两个页面是同一个东西——语言关系当场作废。
这类错在做多语言站的时候相当常见,成因通常是模板里的规范网址取了一个全局变量 (https://zhangwenbao.com/cms-seo-plugin-theme-tag-conflict-duplicate-canonical-title-og-schema-cleanup.html),而那个变量在所有语言版本上都指向主站。判断办法很简单:打开任意一个非英语版本,看它的规范网址是不是指向自己。不指向自己,后面所有的语言版本工作都白做。
## 出问题的时候,怎么判断该找谁?
发现对不上之后,第一件事不是改,是分清这是谁的活。改错方向会白花很多力气。
## 四个问题,顺序不能乱
第一问:我这边列的那一套,自己站内的所有页面是不是一致的?先把自己那一半查干净,不然后面全是噪声。
第二问:对面那个地址能不能打开?打不开就先解决存活问题,比对集合没有意义。注意要换两种身份各试一次。
第三问:对面打开之后有没有跳转?有跳转就先看跳转的终点,不要拿声明地址去比。
第四问:终点页面上有没有列回来?没有列回来,才是真正要去找对面团队的那种问题。
## 三种典型局面与对应的动作
局面 | 根因在哪 | 该做什么 |
对面页面不存在 | 对方删过或改过地址 | 先确认那个市场还在不在,不在就删掉这条声明 |
对面能开但不列你 | 对方模板里没有这一条 | 拿具体地址找对面团队,别泛泛地说要加声明 |
对面列了但标法不同 | 两边对默认版本的理解不一致 | 先在内部把谁是兜底页定下来,再同步给所有市场 |
## 找对面团队的时候,带上这三样
跨团队推这类事最容易卡在对方不理解影响。经验是别讲原理,直接给三样东西:出问题的具体地址清单、他们那边应该加的那几行代码原文、以及这件事对他们自己市场的影响。
最后一样最关键。这套声明的收益是双向的——对面不列你,他们那个市场的页面同样拿不到你这边的定向。把这句话说清楚,比讲十遍规范有用。
## 一份可以直接抄的沟通结构
写给对面团队的那封邮件,四段就够。
第一段说现象:我们站上有N个页面声明贵站的某某地址是它的某语言版本,实测那些页面上没有指回来的声明。附一份不超过十行的地址对照表。
第二段说影响:这会导致我们两边的页面在搜索里互相抢同一批用户,你们那个市场拿到的可能是我们的英文页。
第三段说动作:需要在你们的页面头部加这几行,代码原文附上,位置在哪里也写清楚。
第四段说验证:改完之后告诉我们,我们这边抓一次确认。
关键是第三段要给到可以直接粘贴的东西。对面团队多半不熟悉这套机制,让他们自己去查规范,这件事就会一直排在待办的最后一行。
## 推不动的时候怎么办
如果对面短期内改不了,务实的做法是先把自己这边的那一条删掉。
理由是单向声明不生效,留着不但没用,还会在你自己的审计报告里持续报错,消耗每次核对的注意力。等对面能配合了再一起加回来。
需要说清楚的是,删掉不等于放弃那个市场——它只是不再声称这两个页面是一组。那个页面照常被收录、照常排名,只是少了一层定向。
## 自己站上怎么查,查完按什么顺序修?
这一节给可执行的顺序。整套流程不需要付费工具。
## 五步核对
第一步,从自己站上抽一批代表页面 (https://zhangwenbao.com/ecommerce-seo-audit-template-level-sampling.html)——首页、一个分类页、一个商品页、一个帮助中心页各一个,把它们的声明抽出来。
第二步,检查自指。每个页面的清单里必须有它自己。这一步最快,也最容易一次抓到问题。
第三步,检查站内一致性。同一组的几个页面列的应该是同一套,条数先对一下,条数不等就直接是问题。
第四步,实抓所有目标地址。记状态码,记最终落地地址,非正常的换个身份再抓一次。
第五步,解析目标页的声明,跟源页做集合比对,同时比每个地址的标法。
## 修的优先级
顺序 | 修什么 | 为什么排这里 |
1 | 缺自指 | 改自己的模板就能修,一改全组受益 |
2 | 指向已经不存在的页面 | 零风险,直接删 |
3 | 指向会跳转的地址 | 把声明改成跳转终点即可,也在自己手里 |
4 | 默认版本标法不一致 | 要先在内部定口径,再一次性同步 |
5 | 对面不列你 | 要跨团队,周期最长,放最后 |
这个顺序的逻辑是先做完全在自己手里的,再做需要别人配合的。前三项通常能解决掉大半问题,而且当天就能上线。
有一点要提醒:别把第五项当成拖延前四项的理由。实践中很常见的一种状况是,团队盯着推不动的那一项反复开会,而自己模板里那个缺自指的问题挂了大半年没人改。前者是别人的进度,后者是自己的进度,混在一张表里汇报,最后两边都停在原地。
把两类分开排期、分开汇报,是这件事能推下去的关键。自己那部分改完就能拿到确定的收益,别人那部分再慢慢磨。
## 把核对做成例行的三个触发点
定期巡检对这件事效果一般,因为问题不是匀速产生的,它集中在几个特定时刻。更有效的是把核对挂在这三个触发点上:
第一,新增或下线一个市场时。这是最大的一次变更,必须全组同步。
第二,任何一个国家站做地址结构调整时。这一条需要提前跟各市场团队约定:改地址前先通知。
第三,每次做站点迁移或换建站系统 (https://zhangwenbao.com/headless-cms-seo-infrastructure-rebuild-sitemap-meta-canonical-redirect.html)时。这类动作最容易把整块声明弄丢。
## 还有一个偷懒但有效的办法
如果集群规模大到手工维护不动,可以把这套声明从页面上挪到清单文件里——规范允许在站点地图里表达同样的关系,而站点地图是程序生成的,天然带一个每次导出都重算的触发点。
它的代价是可读性变差、排查更麻烦,而且不解决对面不配合的问题。但它至少把你自己那一半从手工维护变成了自动生成,这已经能砍掉相当一部分错误。
## 把核对写成一段脚本,逻辑就这几步
不想每次手工做的话,这段逻辑不难写,核心不到五十行。
输入是一批本站地址。第一步抓每个页面,解析出它的声明清单,同时记下它的规范网址。第二步检查规范网址是不是指向自己,不是就直接标红,后面都不用查了。第三步检查清单里有没有自己。第四步把清单里所有目标地址去重,做归一化,然后逐个抓,记状态码和最终落地地址。第五步解析每个目标页的清单,跟源页做集合比对,同时比每个共有地址的标法。
三个容易写错的地方要提一句。一是归一化必须做,否则尾斜杠和大小写会制造大量假问题。二是非正常状态必须换身份重抓一次,否则失败率会虚高。三是要按最终落地地址去比,不是按声明地址,跳转会让后者失去意义。
输出建议分成两张表:自己能修的和要找别人的。这两张表的处置节奏完全不同,混在一起会让前一张也拖着。
还有一件小事值得提前想:这段脚本抓的是别人的站,频率要收着点。每个域之间留一两秒间隔,别开太高的并发。跨域目标里有相当一批带着地区级的防护策略,一次密集请求就可能把自己的出口地址拉进黑名单,之后你连正常核对都做不了。
另外,脚本跑出来的结果要留一份带时间戳的存档。这类问题往往要来回几轮才能推动,半年后再看时,能拿出当初那份记录说清楚哪些是新出的、哪些是一直没改的,比重新解释一遍有说服力得多。
## 常见问题解答
## 只有我这边写了,对方没写,能生效吗?
不能。规范明确要求这套声明必须双向成立,且每个成员都要包含自己。搜索引擎的处理方式是把单向的那条忽略掉——它没法确认这门关系是不是你单方面声称的。实测240个目标页里,有12个漏了自指,还有6个一条声明都没有,这两类都会导致整组关系不成立,哪怕别的成员都写对了。
## 怎么快速判断我的站有没有这个问题?
最快的一步是查自指:打开任意一个语言版本的页面,看它的清单里有没有它自己。没有就是硬伤,而且这一条改自己的模板就能修。接下来抽三到四个目标地址实抓,看能不能打开、有没有跳转、打开之后列不列你。整套下来半小时以内,实测里19.2%的站会在这一步就暴露问题。
## 目标地址打不开,一定是对方的问题吗?
不一定。实测18条打不开的目标里,7条换成普通浏览器身份重抓就正常了,占38.9%。原因通常是对方的防护策略不接待自动化请求,或者做了地区级访问限制。所以看到失败先换个身份再试一次,不然失败率会被虚报——本文这批数据不做这一步会写成7.0%,做完是4.3%。
## 同一个地址被两边标成不同语言,要紧吗?
分情况。如果是普通的语言地区标法不同,搜索引擎通常会忽略有分歧的那一条,其余照常生效,影响有限。如果分歧出在谁是默认版本上就比较麻烦——整组说不清兜底页是哪个,搜索引擎只能自己挑。实测8894次比对里1758次标法不同,占19.8%,而头部几组全部围绕默认版本这一件事。
## 声明的地址会跳转,需要改吗?
需要。搜索引擎抓到的是跳转终点,而终点页面上列的是它自己那一套,很可能不包含你写的那个原地址,于是两侧对不上。实测240个能打开的目标里32个跳到了别处,占13.3%,而且多数站是抽到的几条全中,说明是站点级规则。改法很简单:把声明直接写成跳转终点的地址。
## 跨域声明是不是应该避免?
不用避免,规范本来就允许。实测21个站写了跨域声明,一共277条。真正的风险不在跨域本身,在于另一头归谁管——同一个团队的不同国别域基本没问题,跨部门和跨公司的才难维护。一个可以参考的负结果是:39个能对照的跨域目标,平台指纹全部与源站相同,说明技术上是通的,障碍主要在组织上。
## 集群太大维护不动,有什么办法?
可以把这套关系从页面挪到站点地图里表达,规范允许两种写法。好处是站点地图由程序生成,每次导出都会重算,天然带一个更新触发点,不像模板里那几行会一直不动。代价是可读性和排查便利性都变差,而且不解决对面不配合的问题。适合语言版本超过十几个、又确实维护不动的站。
## 对面团队推不动怎么办?
短期内推不动的话,先把自己这边指向对方的那一条删掉。单向声明本来就不生效,留着只会让每次核对都报同样的错,白白消耗注意力。等对方能配合了再一起加回来。要注意删掉不等于放弃那个市场,那个页面照常被收录和排名,只是少了一层语言定向。沟通时带上具体地址清单、对方要加的代码原文、以及这件事对他们自己市场的收益,比讲规范有效得多。
## 权威参考资料
## hreflang里236条地区声明,背后只有6个真页面
- URL:https://zhangwenbao.com/hreflang-region-code-declared-vs-real-pages.html
- 分类:国际SEO
- 发布:2026-08-16 | 更新:2026-08-16
- 摘要:9月下旬开始,搜索广告系列里那个语言定位的下拉框就没有了,平台改成自己读素材和落地页来判断。你网站上那份hreflang,经得起同一种读法吗?
- 关键词:hreflang,国际SEO,语言与地区,广告投放
> **TLDR**:摘要:73个做了hreflang的品牌站,一共声明了2469条语言地区组合,可这些声明指向的地址去重之后少得可怜——有一家写了236条,背后只有6个不同的地址。同一批站里,另一个也用来说明语言的字段,97.8% 都填了,而且只有1个站填得与正文对不上。同一件事的两半,命运差这么远,原因只有一个。
> 摘要:73个做了hreflang的品牌站,一共声明了2469条语言地区组合,可这些声明指向的地址去重之后少得可怜——有一家写了236条,背后只有6个不同的地址。同一批站里,另一个也用来说明语言的字段,97.8% 都填了,而且只有1个站填得与正文对不上。同一件事的两半,命运差这么远,原因只有一个。
9月下旬开始,Google Ads的搜索广告系列里那个语言定位的下拉框就要消失了。这条消息在投放圈里没掀起多大波澜,多数人的反应是“反正我一直选的是全部语言”。
但这件事值得停下来看一眼,因为它删掉的不是一个功能,是一个由广告主自己填、平台无法核实的分类字段。取而代之的做法是:平台自己读广告素材写的是什么语言、落地页写的是什么语言,再结合它对这个用户能看懂哪些语言的判断,自行决定投不投。
换句话说,平台不再问你,它自己看。
这个动作在网站这一侧有一个对应物,就是hreflang。同样是宣告“这一页是给谁看的”,同样由你自己填,同样没人当场验证。那么问题来了:如果哪天搜索侧也决定自己看,你那份声明经得起对照吗?手头正好有一批品牌站的首页快照,这次专门拆了这一层,结果比预想的难看。
## Google Ads删掉的那一栏,本来就是你自己填的
先把事情说清楚,免得后面讨论跑偏。
同期还有一个方向相反的变更,砍掉五万美元门槛给中小投手的机会 (https://zhangwenbao.com/google-ads-lead-form-50k-threshold-removed.html)。
同一时间段还有另一个变更也把重心推向了落地页,广告系列自动升级之后文案原料全在落地页上 (https://zhangwenbao.com/ad-landing-page-copy-source-robots-template.html)。
## 删的到底是什么
删的是广告系列层级的语言定位设置。以前你在搜索广告系列里可以勾选目标语言,勾了英语,系统就只把广告投给它认为在用英语的用户。9月下旬之后,这个勾选项在搜索广告系列和AI Max搜索广告系列里会整个消失。
另一家平台的定位限制更硬,整个大类被挡在门外,产品却还没上线 (https://zhangwenbao.com/apple-maps-ads-home-services-ban.html)。
顺带澄清一个常被混淆的问题,投广告到底帮不帮自然排名 (https://zhangwenbao.com/does-google-ads-help-organic-ranking-myth.html),那是两套互不相通的系统。
效果最大化广告系列的情况稍微复杂一点:语言设置对搜索广告不再生效,但对视频、展示、发现和邮箱这几个渠道仍然管用。Search Engine Journal关于这次移除的报道 (https://www.searchenginejournal.com/google-is-removing-language-targeting-from-search-campaigns/585592/)把范围写得比较细,做多渠道投放的可以对照一遍自己的账户。
## 用什么替代
官方给的替代方案是三样信号的组合:广告素材本身的语言、落地页的语言、以及系统对用户能听懂哪些语言的判断。
素材语言要纯粹,来源可以很朴素,把用户评论变成高转化的产品描述 (https://zhangwenbao.com/ai-transform-reviews-into-product-descriptions.html)。
落地页的分量正在各条线上同时变重,AI来的流量转化率高但落地页接不住 (https://zhangwenbao.com/ai-referral-traffic-conversion-landing-page.html)是另一个例子。
前两样都是它能直接读到的东西——广告文案写的是德语还是英语,落地页上的正文是什么语言,这些不需要你告诉它。第三样是它自己的推断,来自搜索词用的什么语言、用户的账号语言设置、浏览器语言等等。
这三样有个共同点:没有一样是你填的表单里的值。它们要么是可以被直接观察的事实,要么是平台自己的推断。这就是这次变更的实质。
这条消息在几家行业媒体上都出现过,细节基本一致。另一份关于9月这次语言定位更新的独立报道 (https://www.seroundtable.com/google-ads-language-targeting-update-41867.html)可以拿来交叉核对时间点和影响范围,做多账户的团队值得两边都读一遍再动手。
## 有一条后果值得单独拎出来
报道里提到一个具体场景:一次英语的搜索,有可能触发一条法语的广告,只要系统判断这个用户看得懂法语。
机器改写页面这件事还有更离谱的形态,浏览器自动翻译把yes改成forks (https://zhangwenbao.com/browser-auto-translate-rewrites-page.html)。
语言边界被系统自己打通,还有一种更早的形态,自动翻译结果正在悄悄抢走国际流量 (https://zhangwenbao.com/google-translated-results-international-traffic-defense.html)。
这在过去是不会发生的,因为你勾了英语就锁死了。现在这道锁没了,取而代之的是一个你看不见也调不动的判断。对绝大多数投放来说这是好事,覆盖会更宽;但对一部分人来说是麻烦事,下面会说。
## 接口那一层是硬删
还有一个细节,做自动化投放的团队要注意:接口层面会直接拒绝。新建搜索广告系列时如果还带着语言条件,会返回一个明确的操作不被允许的错误。
自动化脚本得有人定期巡检,用cron把备份、站点地图与日志一条龙 (https://zhangwenbao.com/linux-cron-shell-independent-site-automation-ops-backup-sitemap-ssl.html)。
接口配额和限制怎么用足,检查接口在两千条配额下的监控管线 (https://zhangwenbao.com/gsc-url-inspection-api-bulk-index-monitoring.html)有一套现成写法。
这跟“字段还在但没人看”不一样。很多被废掉的信号是留着的,写了也不报错,只是没作用。这次是直接不让写。一个字段从可写变成不可写,说明平台已经不打算给它留任何余地了。
项目 | 变更前 | 变更后 |
搜索广告系列语言定位 | 你勾选 | 整个移除 |
AI Max搜索 | 你勾选 | 整个移除 |
效果最大化的搜索部分 | 你勾选 | 不再生效 |
效果最大化的其他渠道 | 你勾选 | 仍然生效 |
判断依据 | 你填的值优先 | 素材语言加落地页语言加用户信号 |
接口写入 | 允许 | 直接报错 |
## 公告里那句“不需要做任何操作”该怎么读
官方的说法是现有广告系列不需要做任何操作,一切照常。这句话字面上没错,但它回答的是“会不会出故障”,不是“要不要关注”。
对着原文核一遍从来不多余,九条查得到出处八条数字对不上 (https://zhangwenbao.com/best-practice-list-citation-drift.html)。
读官方措辞这件事有通用技巧,不做什么的清单比做什么的更可核查 (https://zhangwenbao.com/ai-usage-disclosure-negative-list.html)讲的是同一种读法。
这类公告有个固定的读法:看它说了什么,更要看它把责任推到了哪里。这次的原话里还跟着半句——这个变更让广告素材和落地页所使用的语言变得更重要。
翻译一下就是:原来你填的那个值出错了,系统会用你的设置兜住;现在这个兜底没了,素材和落地页的语言就是唯一依据。不需要操作,指的是不会报错;但判断依据换了地方,出问题的形态也换了地方。
过去常见的错配是“素材是德语但语言定位选了英语”,这种错配以前被设置压住了,投放范围仍按你选的走。现在这类账户会直接暴露:系统读到素材是德语,就按德语去匹配用户,投放对象可能跟你原来的预期完全不同。
所以这句“不需要操作”,对干净的账户成立,对有历史错配的账户不成立。而有没有历史错配,只有自己查过才知道。
## 那个勾选框以前到底管什么
要理解删掉它意味着什么,得先知道它原来干什么。很多人以为它是“把广告翻译成这个语言”,不是的,它从来不翻译任何东西。
另一家平台收回信号时的应对,归因失真怎么救的九招 (https://zhangwenbao.com/dtc-meta-ads-ios14-attribution-rebuild.html)可以对照。
自动化产品交出控制权的代价,效果最大化六个月实战避坑 (https://zhangwenbao.com/dtc-google-pmax-real-world-pitfalls.html)记过一笔完整的账。
它管的是投放资格。你勾了英语,系统就只把这条广告投给它认为在使用英语的用户。至于这条广告本身写的是什么语言,它不管——你完全可以写一条德语广告,然后勾选英语,系统照投不误,只是投给了看不懂的人。
这个设计有个隐含前提:系统假定你知道自己的广告是给谁看的,而它自己不知道。在这个前提下,问你是合理的。
问题是这个前提早就不成立了。今天判断一段文案是什么语言,是一件几乎零成本的事;判断一个用户能看懂什么语言,平台掌握的信号也比你多得多——账号设置、历史搜索、浏览器配置、地理位置,这些你一个都拿不到。
当被问的人知道得比问的人少时,这个提问就没有意义了。删掉它不是因为它做错了什么,是因为它已经不再提供任何系统不知道的信息。
## 为什么是现在
时间点也值得琢磨一下。语言判断的技术成熟很多年了,为什么拖到2026年才动手?
能力到位才动手是一贯节奏,从熊猫算法到AI模式这十四年 (https://zhangwenbao.com/google-content-quality-algorithm-14year-evolution-panda-to-ai-mode.html)能看清这条线。
把控制权交出去之前,先得知道自己的底线在哪,目标回报率到底该定多少 (https://zhangwenbao.com/google-ads-target-roas-cpa-break-even.html)有四步算法。
合理的解释是这一栏还有别的用途——它不只是一个技术信号,还是一个控制阀。广告主用它来限制投放范围,图的是可控和可解释,哪怕系统判断得更准,很多人也宁愿自己锁死。
删掉这个阀门,等于要求广告主把控制权交出去。这类变更平台通常会拖到自动化系统足够可靠、并且已经在别的场景验证过之后才做。先在效果最大化这类全自动产品上跑通,再回来动搜索广告系列,是很典型的推进节奏。
这也解释了为什么效果最大化的其他渠道还留着这个设置:那些渠道的语言判断依据没有搜索场景这么充分——展示和视频广告没有搜索词可读,判断用户语言的把握就低一些。信号越充分的地方,自填字段越先被拿掉。
## 为什么偏偏是语言这一栏被收回?
广告后台里自己填的字段多了去了。预算是你填的,出价是你填的,受众是你选的,地区是你圈的。为什么单单语言这一栏被拿走?
同一个地址返回不同版本还有别的成因,决定收录哪一版的可能是十分钟前路过的那个用户 (https://zhangwenbao.com/vary-header-cache-fragmentation-googlebot-version-seo.html)。
核验不了的东西平台就会绕开,71家审计揭开平均84%的身份泄漏 (https://zhangwenbao.com/ai-search-verify-business-identity-leak.html)是另一个切面。
这条规律的另一半在内容来源上,水印测出来也证明不了这段字是谁写的 (https://zhangwenbao.com/ai-watermark-detection-authorship-self-declared.html)是同一个框架里的另一格。
## 因为它是少数几个平台能自己看出来的
答案其实很朴素:因为语言可以被内容本身核验,而其他大部分设置不行。
能不能读到还取决于渲染方式,三种渲染模式的引用率实测 (https://zhangwenbao.com/js-rendering-ai-crawler-citation-rate-csr-ssr-isr-divergence.html)差别不小。
机器到底能从页面上读出多少,拿样本页跑一遍语义化HTML就知道 (https://zhangwenbao.com/semantic-html-content-extractability-engineering.html)。
预算多少,只有你知道;出价策略是你的意图,平台无从判断对错;受众定义是你的假设。但语言不一样——广告文案就摆在那儿,落地页就摆在那儿,读一遍就知道是什么语言。你填的那个值,和它读到的事实,随时可以对账。
当一个自填字段可以被随时对账,它的存在价值就只剩下两种可能:要么你填的和事实一致,那这个字段是冗余的;要么不一致,那这个字段是错的。两种情况下,观察者的最优选择都是不看它。
## 哪些字段不会被收回
反过来推,就能知道哪些字段会一直留着。
内部事实这类数据怎么和财务对齐,预算到归因到并购退出的七个动作 (https://zhangwenbao.com/finance-cfo-seo-collaboration-7-actions-budget-attribution-asset.html)。
回传给平台的那些数最典型,多触点归因模型怎么选才不被最后一次点击骗走预算 (https://zhangwenbao.com/dtc-multi-touch-attribution-model-selection.html)。
凡是答案不在页面上、平台读不出来的,都会留着,因为除了问你之外没别的办法。比如你愿意出多少钱、你想优先投给新客还是老客、你把哪一次转化算作成功、你回传的那笔订单值多少钱。
这一批字段的共同特征是:它们描述的是你的意图和你的内部事实,不是页面上的可见事实。平台没有独立获取的渠道,只能采信。
字段类型 | 平台能不能自己看出来 | 会不会被收回 |
广告语言 | 能,读素材和落地页 | 正在被收回 |
落地页主题 | 能,读内容 | 早就自己判断了 |
商品类目 | 大体能,读页面和图片 | 已在自动纠正 |
预算与出价 | 不能 | 不会 |
转化价值 | 不能,靠你回传 | 不会 |
目标客户定义 | 不能 | 不会 |
这张表可以当成一个预测工具用。看一个设置项能不能被平台从可见事实里推出来,基本就能判断它还有几年寿命。
## 一个反例:地区定位为什么不会被删
有人可能会问:地区不也一样吗?平台能看到用户的位置,为什么不把地区定位也删了?
能不能做一个市场,先看主体资格,美国、英国与香港三地架构对照 (https://zhangwenbao.com/dtc-overseas-incorporation-us-llc-uk-ltd-hk-ltd-3-region-comparison.html)。
地区这件事在网站侧同样是结构问题,国际站该选国家域名、子目录还是子域名 (https://zhangwenbao.com/international-seo-domain-structure-cctld-subdirectory-subdomain.html)。
这个反例很值得想。表面上看地区确实是可观察的——用户在哪个国家,平台知道得比你清楚。但地区定位删不掉,原因在另一头:它描述的不是内容的属性,是你的商业边界。
语言定位说的是“我这条广告是英语的”,这是关于广告本身的事实,平台读一遍就知道。地区定位说的是“我只做德国和奥地利的生意”,这是关于你公司的事实,平台读页面读不出来——你的物流覆盖到哪、有没有当地资质、能不能收那个国家的货币,这些都不写在广告里。
判断一个字段会不会被收回,关键不是“平台能不能观察到相关信息”,而是“答案在不在你交给它的那份材料里”。语言在,地区不在。
## 为什么被拿走的总是最容易做对的那一栏
这里有个让人不太舒服的悖论,值得摊开说。
把力气花在哪儿更值,排名第一却没人记得你的时候该盯什么 (https://zhangwenbao.com/seo-goal-recognition-not-rankings.html)。
同类的误解还有一个,E-E-A-T到底是不是排名因素 (https://zhangwenbao.com/eeat-ranking-factor-myth-signal-checklist.html)也得先分清哪些是可执行项。
可核验的字段,因为反馈及时,大家填得又全又准——本次数据里那97.8% 就是证明。可恰恰是这批填得最好的字段,最先被观察者接管。
而那些填得最差、最容易出错的字段,因为无法核验,反而稳稳地留了下来,继续由你负责。
所以从结果上看,你在自填字段上投入的精力,回报是倒挂的:花力气把可核验的那部分做到完美,收益会随着系统能力提升而归零;而真正长期有效的投入,是在那些没人能替你验证、也没人能替你纠正的地方。
这不是说可核验的字段可以乱填。填错了照样有即时的坏处,只是它的边际价值在下降。合理的做法是把这部分做到及格就停手,把省下的力气投到那些必须由你说了算的地方。
## 同一条逻辑在自然搜索侧早就跑过一遍
广告这次的变更,在自然搜索那边其实早有先例,只是没有一个明确的公告时点。
索引体系的换血也是这么发生的,那次让索引变实时的改造 (https://zhangwenbao.com/google-caffeine-real-time-indexing-explained.html)。
信号退役的完整轨迹,PageRank退役之后权威信号怎么演变 (https://zhangwenbao.com/pagerank-toolbar-retirement-link-authority-signal-evolution.html)记录得比较全。
关键词标签是最经典的一例。它曾经是页面告诉搜索引擎“我讲的是什么”的官方途径,后来机器能读懂全文,这一栏就彻底失效了。整个过程没有发布会,也没有下线通知,就是慢慢没人看了。
页面自称的更新频率和抓取优先级也是同一条路。这两个值至今写在站点地图规范里,写了不会报错,但主流搜索引擎已经公开说过基本不参考它们,因为页面到底多久变一次,抓一抓对比一下就知道,不需要问你。
广告这边的区别只在于它有个明确的日期。自然搜索侧的字段是慢慢死掉的,广告侧的字段是被公告删掉的,机制完全一样。
## 大多数人真正想问的是:流量会不会掉
讲机制讲了半天,投放的人真正关心的其实是一句话:这个变更之后我的量会不会变少。
大盘变化时的生存策略,自然搜索流量暴跌之后的实战指南 (https://zhangwenbao.com/organic-search-disrupted-aeo-strategy.html)。
流量数字变了先别慌,流量下降不等于SEO失败 (https://zhangwenbao.com/seo-traffic-decline-ai-search-value.html)那八个维度可以逐条对。
直接回答:大概率不会少,更可能变多,但结构会变。
不会少的原因是,删掉的是一个限制条件而不是一个准入条件。原来勾选英语等于告诉系统“非英语用户别给我”,现在这条限制没了,可触达的人群只会变宽不会变窄。
结构会变的原因是,多出来的这部分曝光质量参差不齐。系统判断某个用户“能看懂英语”,和这个用户“愿意用英语完成一次购买”,中间还差着一段距离。特别是客单价高、决策链长的品类,语言的舒适度对转化的影响比想象中大。
所以合理的预期是:曝光和点击可能上升,转化率可能小幅下滑,总转化数看具体情况。如果你发现点击涨了转化没涨,别急着怪系统,先看看多出来的那批点击来自哪些地区、用的什么语言搜的,再决定要不要用别的手段收窄。
## 还能用什么手段收窄
既然语言这个阀门没了,想控制投放范围只剩下几个替代品,各有各的代价。
改之前先想好怎么验证,30个A/B测试方案 (https://zhangwenbao.com/ab-testing-ctr-conversion-optimization.html)里有现成的题目。
想知道某个限制到底值不值,增量测试怎么做才不让本来就会买的人冒领功劳 (https://zhangwenbao.com/incrementality-testing-marketing-measurement-guide.html)。
替代手段 | 控制力 | 代价 |
地区定位 | 强,按国家切 | 切不了同一国家里的不同语言人群 |
拆分广告系列 | 中,靠结构隔离 | 管理成本上升,预算分散 |
素材与落地页语言一致化 | 中,靠信号引导 | 需要内容配合 |
否定关键词 | 弱,只能挡具体词 | 维护量大,挡不干净 |
其中第三项最值得投入,因为它正好顺着新机制的方向走。既然系统改看素材语言和落地页语言,那把这两样做得纯粹一致,本身就是最有效的引导手段——比任何绕过去的技巧都稳。
## 网站这边的同一个字段,填得怎么样?
广告那边讲完了,看网站这边。既然平台越来越倾向于自己读内容,那网站上那些关于语言的声明,值得拿数据体检一次。
不同平台的实现差别很大,Magento的分层导航与hreflang实战 (https://zhangwenbao.com/magento-2-seo-9-core-points-layered-navigation-hreflang.html)是一个例子。
这一层的基础做法在国际化SEO与hreflang的避坑清单 (https://zhangwenbao.com/international-seo-hreflang-complete-guide.html)里有完整版。
## 样本和量法
用的是一批品牌独立站的首页快照,原始187份,按“字节数超过一万且确实是一份完整HTML文档”筛下来剩136份,下面所有比例的分母都是这个136。
另一类样本来自日志,读懂抓取行为与预算浪费 (https://zhangwenbao.com/log-analyzer-crawl-budget-googlebot-guide.html)是配套的量法。
抽样怎么取才既省事又有代表性,按页面模板抽样把百天审计压到半天 (https://zhangwenbao.com/ecommerce-seo-audit-template-level-sampling.html)。
量三样东西:页面顶部那个语言属性写的是什么;页面里的hreflang声明有哪些;以及页面正文实际是什么语言。第三样靠字符集加常用虚词判定,中日韩和西里尔文用字符范围区分,拉丁文字用虚词频次打分,分数太低的算判不出来,不硬猜。
## 先看结论:97.8% 的站填了,只有1个填错
136个站里,133个在页面顶部声明了语言,占97.8%。没声明的只有3个。
填得好的字段之外,还有大片空白,关于我们页面怎么写才被认成可信实体 (https://zhangwenbao.com/about-us-page-entity-eeat-ai-search-guide.html)。
对称标注和默认项的常见错法,hreflang落地时的实操避坑 (https://zhangwenbao.com/hreflang-implementation-return-tags-x-default-canonical-mistakes.html)列得比较全。
更值得注意的是准确率。在能判定出正文语言的那部分里,声明与实际一致的有102个,不一致的只有1个。那一个是某个欧洲美妆零售站,页面顶部写的是捷克语,正文实际是英语——大概率是模板默认值没跟着市场切换。
另有32个站因为首页文字太少判不出语言,没有计入。这些站的首页多半是大图加几个按钮,正文都在下一层。
## 这个数字说明什么
97.8% 的填写率,1个不一致,这是一份相当漂亮的成绩单。放在上一次量过的那批身份字段旁边看,反差非常明显——那批里能被外部核验的字段,填写率掉到了个位数。
模板自动生成的东西多,平台差异就大,谷歌到底偏不偏爱某个建站平台 (https://zhangwenbao.com/does-google-prefer-cms-platform-myth.html)。
模板默认值带来的隐性损失不止这一处,建站第一年的12项共有配置坑 (https://zhangwenbao.com/cms-seo-first-year-hidden-loss-checklist-cross-platform.html)可以对照排查。
为什么这一栏就填得这么好?因为它填错了会立刻穿帮。语言写错,浏览器的朗读会读错,输入法会切错,搜索引擎会把你归到错误的语言库里,而这些后果都是当场可见的。
更关键的是,这一栏在绝大多数建站系统里是跟着内容模板自动生成的,不需要人去填。你切换到德语站点,模板就把那个值改成德语。人不参与,自然也就不会填错。
这条观察本身就是个结论:一个字段填得准不准,跟人有没有责任心关系不大,跟它能不能被自动生成、会不会当场穿帮关系很大。
## 那32个判不出语言的站是怎么回事
把判不出来的那32个站单独翻了一遍,成因基本是同一种:首页上根本没有多少可读的文字。
首页没有正文的站不止这一批,132个独立站首页有28个是空壳 (https://zhangwenbao.com/html-shell-page-readable-text-audit.html)。
字少的页面最容易被认错语言,站上字最少的那几类页面最赚钱也最容易被误判 (https://zhangwenbao.com/minor-language-page-language-detection-misidentification-short-text.html)。
典型形态是整屏大图加几个按钮,文案总共十几个词,剩下全是导航项和页脚的法务链接。这类页面的正文语言不是判不出来,是压根没有正文。
这件事本身就值得单独说一句。既然平台越来越倾向于从内容里读语言,那么一个首页上没有文字的站,等于没有给出这个信号。它不会因此被判错,但它把判断权完全交给了别的线索——域名后缀、服务器位置、跳转历史,这些都不如正文可靠。
做多语言站的团队可以顺手检查一下:把首页的图片和脚本都拿掉之后,还剩多少可读文字。如果只剩十几个词,那这一页在语言判断上是哑的。
## 另外两个说明语言的字段,几乎没人用
顺手还量了另外两处也能表达语言的地方。
读取方少的入口容易被忽视,搜索框怎么设计才不浪费这个高转化入口 (https://zhangwenbao.com/site-search-bar-ux-design-conversion.html)。
语言选择器该写本地写法还是英文写法,179门语言里有136门这两个词毫无关系 (https://zhangwenbao.com/minor-language-endonym-language-picker-sort.html)。
一处是元信息里的内容语言声明,136个站里只有 3个在用。这个写法很早就被规范建议弃用了,现在还在用的多半是老模板遗留。
另一处是社交分享用的地区标记,有 11个站在用。它的作用是告诉社交平台用哪种语言渲染分享卡片,跟搜索关系不大,但它同样是一个语言声明。
这两个数字加上前面的133和73,正好凑成一张有意思的对照表。
说明语言的位置 | 用的站数 | 比例 | 主要读取方 |
页面顶部语言属性 | 133 | 97.8% | 浏览器、辅助技术、抓取器 |
hreflang声明 | 73 | 53.7% | 搜索引擎 |
社交分享地区标记 | 11 | 8.1% | 社交平台 |
元信息内容语言 | 3 | 2.2% | 已基本无人读取 |
同一件事,四个地方可以说,实际使用率相差44倍。规律很清楚:读取方越多、后果越即时的位置,填的人越多。
## 唯一那个填错的站,错法很有代表性
136个站里唯一一个声明与实际对不上的,是一家欧洲的美妆零售平台。页面顶部写的是捷克语,正文实际是英语。
环境变了配置没跟着变,老域名买来怎么用才能保住信任继承 (https://zhangwenbao.com/expired-domain-reuse-redirect-seo-trust-transfer-mechanism.html)也是同类问题。
本地化数据里看着有的多半是借的,看着空的反而是对的 (https://zhangwenbao.com/minor-language-locale-data-inheritance.html)。
为什么是捷克语?查了一下这家公司的背景就明白了:它的总部和最早的市场在捷克。也就是说,这个值大概率是站点最初搭建时的默认设置,后来业务扩张到整个欧洲、首页换成了英语,而这一栏没人想起来改。
这个错法很有代表性,它揭示了这类字段出错的典型路径:不是填的时候填错了,是环境变了而它没跟着变。第一天填的时候是对的,第一千天还是那个值,但内容早就不是那个语言了。
这也解释了为什么这类错误极难被发现。没有人会去重新检查一个当初填对了的字段,而它出错的方式恰恰是“当初对、现在错”。
## 从这个案例能推出一条通用做法
防这种错只有一个办法:让这个值从内容里长出来,而不是配置在某个地方。
机器理解内容的能力一路在涨,从关键词匹配到意图理解的演变 (https://zhangwenbao.com/semantic-search-understanding-evolution-hummingbird-bert-mum.html)。
改版时这类跟着环境走的配置最容易掉,改版不掉SEO的完整防护清单 (https://zhangwenbao.com/website-redesign-theme-switch-seo-protection-h-tag-schema-internal-link-cwv.html)。
具体到实现,就是让模板从当前页面的语言上下文取值,而不是从站点级配置取值。前者跟着内容走,内容换语言它自动跟着换;后者是一个独立的开关,换内容的人不一定知道有这个开关。
这条做法可以推广到所有“描述内容本身属性”的字段。凡是描述内容的,就应该由内容生成;凡是需要人去单独维护的,早晚会和内容脱节。
反过来,那些描述业务事实的字段——公司名称、法定信息、联系方式——则必须由人维护,因为它们本来就不在内容里。两类字段的维护方式应该完全不同,混在一起管必然出问题。
## 抓取地点暴露了一件声明层管不到的事
这批快照有个特殊之处,正好撞出一个额外发现:请求是从中国境内发出的。
抓取端看到的和你看到的经常不是一回事,抓取速率被调低那几天日志里一条错误都没有 (https://zhangwenbao.com/slow-server-truncated-response-crawl-rate-seo.html)。
按来源自动跳转的代价有多大,按IP跳转正在让国际站半数页面进不了索引 (https://zhangwenbao.com/international-seo-ip-redirect-geolocation-language-switcher-ux.html)算过一笔。
结果是有12个站给回了中文页面——顶部语言属性写着中文,正文也确实是中文。这些站里有做智能硬件的、做户外装备的、做美妆的,它们在中国有本地站点,于是按访问来源做了分流。
这件事本身很正常,但它引出一个hreflang处理不了的问题:同一个网址,从不同的地方访问,返回的语言是不一样的。
而hreflang描述的是一组固定的对应关系——这个地址是这个语言这个市场的版本。当地址本身会根据来访者变脸时,这份对应关系就失去了确定性。搜索引擎从美国抓到的是英语版,从德国抓到的可能是德语版,而声明里只能写一个答案。
更麻烦的是抓取方通常从固定的少数几个地方发起请求。你为二十个市场做的分流,在它眼里可能只呈现出一两种面貌。它看到的和你声明的对不上,而对不上的原因你甚至没法解释——因为你自己都很难复现它看到的那一版。
这也是为什么按来源自动跳转语言版本一直被建议慎用。它优化的是人的体验,破坏的是机器的确定性,而这两者在多语言站上经常打架。
## 那hreflang呢,为什么只有一半的站做了?
同样是说明这一页给谁看,hreflang的数据就难看多了。
版本之间的关系可以用别的方式表达,专题页怎么从内链中转站变成被引用的入口 (https://zhangwenbao.com/hub-page-generative-search-ai-citation-guide.html)。
声明写了也未必被当成独立页面,那些语言版本可能只被当成规范页的别名 (https://zhangwenbao.com/hreflang-alternate-url-alias-not-indexed.html)。
## 做了的只有53.7%
136个站里,首页带hreflang声明的只有73个,占53.7%。也就是说,接近一半的品牌独立站,首页上根本没有告诉搜索引擎它还有别的语言版本。
跨语言理解这几年进展很快,多语言跨模态算法怎么影响SEO (https://zhangwenbao.com/google-mum-multitask-multilingual-multimodal-algorithm-mechanism.html)。
生成器给的代码不能直接粘,粘上去就是一份单向标注 (https://zhangwenbao.com/hreflang-generator-sitemap-return-tag-bidirectional-guide.html)。
这里面当然有一部分是真的只做一个语言版本,不需要声明。但从这批站的规模看——都是在多个国家有站点的品牌——不做的比例还是偏高。
## 没做的那一半,多半不是不知道
接近一半的站没做这一层,原因值得拆一拆,因为它决定了这件事该由谁推动。
跨团队的对账清单能解决一部分,埋点归因看板的七个动作点 (https://zhangwenbao.com/data-analyst-seo-reconciliation-7-actions.html)。
推不动的事常常卡在沟通上,一套让老板秒懂还拨预算的讲法 (https://zhangwenbao.com/explain-seo-geo-value-to-non-technical-leadership.html)。
第一类是真的不需要。只有一个语言版本、一个域名,确实没有对应关系可声明。这一类占了没做的相当一部分,它们的选择是对的。
第二类是做不了。各个市场的站点分属不同团队、跑在不同系统上,甚至域名都不在一个注册商。要在每个站的模板里插入指向其他所有站的声明,需要一次跨团队协调,而这件事没有任何一个团队的绩效指标覆盖得到。
第三类是做过又放弃了。做了一版,之后市场增减、域名调整、改版,声明没跟着维护,最后错得比不写还糟,干脆全删了。这一类在老站上不少见。
三类里,第二类是最普遍也最难解的。它本质上不是技术问题,是组织问题——一份需要所有站点同时正确才生效的声明,天然要求一个跨站点的负责人,而多数公司的国际业务是按市场分权的。
这也是为什么这一层做得好的往往是两类公司:要么整个国际站跑在同一套系统上,要么有一个足够强势的中央技术团队。剩下的公司不是不懂,是推不动。
## 两处自称的粒度是倒着的
这是本次测量里第一个反直觉的发现。
两处不一致时先把数据本身看清楚,把结构化数据调试这件事讲透 (https://zhangwenbao.com/json-formatter-jsonld-structured-data-debug-guide.html)。
结构化数据里的语言字段有个反着写的规矩,正文越本地化它越要写回国际格式 (https://zhangwenbao.com/minor-language-structured-data-inlanguage-locale-schema.html)。
页面顶部那个语言属性,136个站里有 101个只写了纯语言码,比如只写英语,不带国家;写成语言加地区两段式的只有30个。也就是说,四分之三的站在这一栏只说语言。
而在hreflang里,情况完全反过来:不含默认项的2469条声明中,2355条都带了地区,占95.4%;只写语言不写地区的只有114条,4.6%。
位置 | 只写语言 | 语言加地区 | 面向谁 |
页面顶部语言属性 | 101个站 | 30个站 | 浏览器与辅助技术 |
hreflang声明 | 114条 | 2355条 | 搜索引擎 |
同一个站,给浏览器看的那处只说语言,给搜索引擎看的那处一定要带上国家。这个差别不是技术要求造成的,两处都允许写两段式。差别在于目的:前者是为了正确渲染,后者是为了争取流量。
## 语言48种,地区248个
把73个站的所有声明拆开数,一共出现了 48种语言和 248个地区。
内容写的是不是本地的事,乌兹别克语4%,英语53% (https://zhangwenbao.com/minor-language-content-local-topic-share.html)。
语言数和实际工作量不是一回事,十一门语言分摊在九套书写系统上 (https://zhangwenbao.com/india-multilingual-seo-eleven-languages-nine-scripts-priority.html)得按后一个数算预算。
248这个数字值得盯一会儿。国际标准里正式分配的国家和地区代码总共也就两百四十多个,这批站几乎把全世界都声明了一遍。
按站均算,一个站声明的语言数中位是5种,地区数中位是11个,合计下来地区是语言的4.09倍。你要问这些站到底做了多少个语言版本,答案是五种上下;你要问它们声明了多少个市场,答案是十一个起步。
## 声明条数的分布,两头差得离谱
73个站的声明条数分布很值得看:最少的只写了1条,中位是15条,最多的一家写了259条,全部加起来2526条。
头部塞太多东西也有上限,抓取体积的2MB上限实测 (https://zhangwenbao.com/crawl-size-checker-2mb-googlebot-fetch-limit-guide.html)。
声明多不等于覆盖广,大量没用的页面怎么拖垮流量 (https://zhangwenbao.com/index-bloat-mechanism-sitewide-diagnosis-decision-matrix.html)是同一种膨胀。
最少和最多之间差了259倍。这不是规模差异能解释的——写1条的和写259条的,都是在多个国家有生意的品牌。差的是对这个标签的理解:有人把它当成版本对照表,有人把它当成市场覆盖清单。
中位数15是个挺健康的数字。15条大致对应“三四个语言版本乘以三四个主要市场”,这个量级的声明通常背后是有真实版本支撑的。真正需要警惕的是超过50条的那一批,几乎必然包含大量兜底型声明。
## 默认项的覆盖率意外地高
73个有声明的站里,66个用了默认项,占90.4%。
空版本怎么处理是同一类问题,集合页没有产品时该怎么办 (https://zhangwenbao.com/seo-empty-shopify-collections.html)给了三种场景。
同语言多地区的正确写法,同一种英语卖到美英澳怎么不自己跟自己打架 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html)讲得最细。
这个比例出乎意料地高。默认项是一个纯粹技术性的东西,没有任何展示价值,能有九成的覆盖率,说明做这一层的团队基本都知道规范该怎么写。
但这个高覆盖率反而让后面那个发现更刺眼:既然九成的站都用了默认项来兜底,为什么还要把两百多个市场逐个再指一遍?默认项存在的全部意义就是承接那些没有专属版本的市场,逐个指向等于把兜底工作重做了一遍,还是用一种更容易出错的方式。
唯一说得通的解释是:很多人并不认为默认项在兜底,而是把它当成一个必填项写上去的。知道要写,不知道它管什么。
## 怎么判断一条跨语言声明合不合理
既然用英语覆盖非英语市场是普遍做法,那怎么判断某一条这样的声明是合理的还是拍脑袋的?有一个不需要猜的办法。
各语种内容写的外国是谁,30门里21门第一名是美国,份额只有一成五 (https://zhangwenbao.com/minor-language-content-foreign-reference-country.html)。
选语种别先看人口,先看有没有人拿这门语言写价格和退货政策 (https://zhangwenbao.com/africa-market-language-selection-swahili-hausa-francophone.html)。
去查那个国家的实际语言使用数据。国际化标准里维护着一份各地区语言使用情况的公开数据表,能查到某个国家有多少人把某种语言当作第一语言、多少人当作第二语言。拿这个比例当判据,比拍脑袋靠谱得多。
大致可以这么用:某个国家英语作为通用语言的人口比例足够高时,用英语版本覆盖它是合理的,用户体验损失有限;比例低的国家,一条英语声明的实际意义就很可疑,它更像是在填表而不是在服务用户。
按这个尺子看本次数据里那份英语目的地清单,北欧几国、荷兰、新加坡这类属于明显合理;而某些南欧和东欧市场的英语普及度就没那么高,那里的英语声明更可能是兜底而非有意为之。
## 但真正的判据其实更简单
上面那套查法有点重。日常做决策,有个更土的判据:去看那个市场的转化率。
用结果反推投入值不值,用留存还原回报的五步财务模型 (https://zhangwenbao.com/dtc-ltv-calculation-cohort-roas-attribution.html)。
把结果追回到源头这件事,让选词被成交驱动 (https://zhangwenbao.com/foreign-trade-inquiry-attribution-seo-keyword-selection-conversion-driven.html)是同一种思路。
如果一个市场的流量不少、转化率明显低于同语言的其他市场,那多半就是语言不匹配造成的摩擦。这个信号比任何人口统计都直接,因为它衡量的是你的用户而不是那个国家的平均水平。
反过来,如果某个非英语国家用英语页面接住的转化率跟英语母语国家差不多,那说明你的客群本来就是那批习惯英文的人,完全不必为它单独做本地化。
先看数据再决定做不做翻译,比先做翻译再看效果,成本低一个数量级。而绝大多数团队的顺序是反的——先立项做多语言,做完才发现某几个语种一年带不来几单。
## hreflang里的“语言”,到底是不是语言?
这是本次数据里最锋利的一条,也是让保哥重新理解这个标签的一条。
名字怎么写不由你定,由当地用户的输入法定 (https://zhangwenbao.com/brand-name-transliteration-loanword-minor-language-search.html)。
名字在不同语言里会碎掉,四个字母写成本地文字之后碎成九片 (https://zhangwenbao.com/minor-language-brand-name-token-fragmentation.html)。
## 79.6% 的英语声明,指向的不是英语国家
2469条声明里,语言部分写英语的有1746条,占了七成。把这1746条的地区部分逐个看过去,指向非英语母语地区的有1389条,占79.6%。
用小语种写内容有额外风险,读着最顺的那一段恰恰是模型编出来的 (https://zhangwenbao.com/low-resource-language-ai-hallucination-rate-content-risk.html)。
答案说你的语言,来源却是英文页,这件事在AI搜索里更普遍 (https://zhangwenbao.com/ai-search-language-bias-low-resource-citation-source-audit.html)。
最常见的英语目的地是这些:德国24次、荷兰24次、法国22次、比利时22次、丹麦22次、芬兰21次、瑞典21次、意大利20次、西班牙20次、奥地利19次、阿联酋19次、捷克18次、日本18次、韩国18次、挪威18次、葡萄牙18次、瑞士17次、斯洛伐克17次。
把这份清单读一遍就明白了:这不是在描述内容的语言,这是在描述生意做到了哪里。一个品牌在德国、日本、韩国都开了店,但没有做德语、日语、韩语的内容,于是就用英语版本对着这些市场各声明一条。
## 标签的名字骗了很多人
hreflang这个词的字面意思是链接的语言,但它的实际用法早就变成了语言和市场的组合。国际标准里那套语言标记规范,允许你在语言码后面接一个地区码,本意是区分同一语言的地区变体,比如英式英语和美式英语的拼写差异。
名字与实体对不上的通用解法,实体消歧的六类信号管控 (https://zhangwenbao.com/entity-disambiguation-mechanism-seo-signal-control.html)。
语言码本身也在变,注销的385个里七成是并进了另一门语言 (https://zhangwenbao.com/minor-language-code-retirement-macrolanguage.html)。
可在电商实践里,这个地区码承担的是完全不同的任务:它标的不是“这个版本的英语跟别处不一样”,而是“这个页面对应我在那个国家的店”。
如果你想确认某个语言地区组合到底合不合规范,语言标记的正式规范文本 (https://www.rfc-editor.org/rfc/rfc5646)是最终依据,而子标签查询工具 (https://r12a.github.io/app-subtags/)可以直接查某个码存不存在。真要较真的话,各地区的语言使用数据表 (https://www.unicode.org/cldr/charts/46/supplemental/territory_language_information.html)能告诉你某个国家到底有多少人讲哪种语言,用来判断一条声明合不合理。
## 用英语覆盖非英语市场,本身没错
要说清楚,用英语版本去覆盖一个非英语国家,这个做法本身完全正当。北欧几国的英语普及率极高,用英语做站是理性选择;阿联酋、新加坡这类市场英语是通用商业语言;很多品类的目标客群本来就习惯看英文。
同一个意思在不同语言里成本差很多,英语两个后缀就够,德语要写五遍 (https://zhangwenbao.com/minor-language-comparative-superlative-keyword-forms.html)。
语言和国家从来不是一一对应,读者没有跟着地缘变化一起消失 (https://zhangwenbao.com/russian-language-market-seo-decision-after-2022-geopolitical-shift.html)。
问题不在于这么做对不对,而在于这份声明表达的东西和它的名字对不上。当你写下一条英语指向德国的声明时,你想说的是“德国用户请看这一页”,可标签的语义是“这是给讲英语的德国人看的版本”。
这两句话在大多数时候结果一样,但在系统需要做判断的时候会分岔。而分岔的时候,采信哪一句,不由你决定。
## 反过来看,非英语的声明有多少
把英语之外的语言单独拉出来数一遍,分布是这样的:法语133条、德语105条、西班牙语91条、意大利语49条、荷兰语42条、中文37条、波兰语25条、阿拉伯语22条、日语19条、捷克语19条、韩语18条、瑞典语18条、葡萄牙语15条、斯洛伐克语14条。
翻译出来的词表多半没人搜,那些词是当年拿词典逐词换出来的 (https://zhangwenbao.com/keyword-literal-translation-legacy-cost-non-english.html)。
一门语言里有多少内容是搬来的,越南语近一半,波兰语只有0.22% (https://zhangwenbao.com/minor-language-content-translated-share.html)。
英语1746条,其余所有语言加起来723条。英语一种语言占了全部声明的七成。
这个比例说明了这批品牌的真实做法:主力是一套英语内容打全球,本地语言版本只在几个重点市场做。法语、德语、西班牙语这前三名,恰好对应欧洲最大的三个非英语消费市场。
有意思的是阿拉伯语排到了第八,比日语和韩语都靠前。这跟中东市场这几年在DTC出海里的权重上升是对得上的——阿联酋、沙特的客单价高,值得单独做内容。
## 地区榜第一名不是美国
地区那一半的分布更有意思。出现次数最多的前几个是:加拿大68次、德国64次、法国63次、美国60次,然后是比利时55、瑞士53、意大利52、英国51、西班牙51、奥地利47、荷兰46。
用搜索量当先行指标要注意口径,搜索份额怎么算才能预测市场份额 (https://zhangwenbao.com/share-of-search-brand-mindshare-market-share-predictor.html)。
统计口径决定榜单长什么样,品牌词与非品牌词的流量结构怎么读 (https://zhangwenbao.com/branded-vs-nonbranded-keyword-traffic-structure-strategy.html)是另一个例子。
美国居然排第四,被加拿大、德国、法国压在后面。这不符合直觉,因为美国肯定是这批品牌最大的市场。
原因在于双语国家会被重复计数。加拿大同时有英语和法语两套声明,瑞士甚至可能有德语、法语、意大利语三套,比利时有荷兰语和法语两套。一个国家做几种语言,就在榜上出现几次。
这一条其实反过来印证了地区码的性质:它统计出来的不是市场大小,是声明的密度。一个市场在榜上排得高,可能是因为它重要,也可能只是因为它语言多。拿这种榜单去做市场决策,会得出错误结论。
## 瑞士这个例子值得单独看
瑞士出现了53次,排第六。这个国家人口八百多万,市场规模远不如美国德国,为什么声明这么多?
翻译报价单和真正被读的字不是一回事,四万字里那几十个词一个都不在 (https://zhangwenbao.com/minor-language-hardcoded-ui-strings-pseudo-localization.html)。
多语言界面的完成度会掉队,208个版本里曾经翻满的四成已经掉队 (https://zhangwenbao.com/minor-language-interface-translation-coverage.html)。
因为它有四种官方语言,而多数品牌至少会做德语、法语两套,讲究一点的加意大利语,再加一套英语兜底。一个国家四条声明,比大多数国家多三倍。
这就带来一个实际问题:为瑞士单独做四套内容,值不值得?从声明成本看几乎为零,从内容成本看是四倍。而现实是,绝大多数站的这四条声明指向的是同一套或者两套页面——又回到了前面那个问题:声明有四条,页面没有四个。
## 加拿大那68次也有故事
榜首的加拿大同样值得看一眼。68次里,英语和法语大致对半开——这是加拿大法定双语带来的必然结果。
承诺译过去可能变了强度,那句退货政策在日语里成了不这么做就不行 (https://zhangwenbao.com/minor-language-modality-obligation-commitment-strength.html)。
合规对语言的要求比你以为的硬,用户点同意之前翻译脚本一行都不许跑 (https://zhangwenbao.com/minor-language-consent-banner-language.html)。
但实际做法差别很大。有的站两套内容都是真的,法语版本有独立的商品描述和帮助中心;有的站法语声明指向的其实是英语页面,纯粹为了在声明里显得覆盖完整。
后一种做法的风险比一般的兜底更高,因为加拿大法语是有法规要求的。魁北克对商业场景下的法语使用有明确规定,声明自己提供法语版本却给一个英语页面,这已经不只是SEO问题。
这一条提醒了一件事:声明层的虚假在多数市场只影响效果,在少数市场会影响合规。做欧洲和加拿大市场的团队,值得把这一层单独过一遍,别让一条随手写的声明变成一个法务问题。
## 236条地区声明,背后有几个真页面?
前面都是铺垫,这一节才是本次测量最想说的。
多一门语言不只是多一套模板,喂给平台的那份数据要多一整份文件 (https://zhangwenbao.com/minor-language-product-feed-language-fields.html)。
数出来的东西受工具限制,后台数据的三大黑洞怎么补 (https://zhangwenbao.com/gsc-data-hidden-limits-1000-row-url-bucket-threshold-workaround-engineering.html)。
量大了手写维护不动,用脚本从爬虫结果自动生成对应关系 (https://zhangwenbao.com/ai-script-hreflang-xml-sitemap-multilingual.html)是一条出路。
## 把声明条数和实际地址数放在一起数
思路很简单:一条hreflang声明由两部分组成,一个语言地区码,一个目标地址。声明条数好数,把目标地址去重之后还剩几个也好数。两个数一比,就知道有多少个“市场版本”是纸面上的。
地址解析方式不同结果就不同,工具报的死链和真实抓取的从来不是同一批 (https://zhangwenbao.com/relative-url-resolution-crawler-googlebot-broken-link-seo.html)。
地址去重这件事本身就有坑,同一个页面11种写法都返回200 (https://zhangwenbao.com/url-path-normalization-case-slash-duplicate-seo.html)。
73个有声明的站里,53个存在多条声明指向同一个地址的情况,占72.6%。
## 最极端的那几个
站点类型 | 声明条数 | 去重后地址数 | 倍率 |
北欧家居工具品牌 | 236 | 6 | 39.3倍 |
美国旅行箱包品牌 | 31 | 4 | 7.8倍 |
英国快时尚零售商 | 23 | 8 | 2.9倍 |
智能家居配件品牌 | 46 | 20 | 2.3倍 |
消费电子配件品牌 | 5 | 3 | 1.7倍 |
分页也会制造大量近似页面,集合页分页的索引判断与规范设置 (https://zhangwenbao.com/shopify-collection-pagination-seo-guide.html)。
一个模板生成十种语言,字符层看不出重复,信息层十份一模一样 (https://zhangwenbao.com/multilingual-template-ten-languages-duplicate-content-risk.html)。
第一行那个站,声明了236条语言地区组合,而这236条指向的只有6个不同的网址。平均每39条声明共用一个页面。
它想表达的意思大概是:我这6个页面,能服务全世界这两百多个语言地区组合。这个愿望没什么问题,问题是它用一个本来表示“对应关系”的标签,表达了一个“通用兜底”的意思。
## 重复指向的三种成因
翻了翻明细,这些重复大致分三类,性质完全不同。
配置遗留的后果有更严重的版本,测试站被索引之后的八步清除 (https://zhangwenbao.com/staging-preproduction-environment-index-leak-prevention-recovery.html)。
信息量不足的页面会被分到哪一层,分层索引把页面丢进哪一层 (https://zhangwenbao.com/google-index-tiers-base-zeppelin-landfill.html)。
第一类,兜底型。确实只有几个语言版本,但想让所有市场都能被覆盖,于是把每个市场都指向最接近的那个版本。上面那个236比6就是典型。这类的动机是善意的,但它把本该由默认项承担的任务,摊派给了两百多条具体声明。
第二类,同语言多市场型。比如同一个英语页面同时声明给英国、爱尔兰、澳大利亚、新西兰。这类其实是规范允许的正常用法,重复是合理的,只是数出来会计入统计。
第三类,配置遗留型。历史上做过某个市场的独立版本,后来合并了,声明没跟着改,于是几条声明指向了同一个页面。这类是纯粹的技术债,也最容易修。
三类里只有第二类是正常的。麻烦在于,从声明本身看不出来自己属于哪一类——要判断,得回去问业务上到底有没有那个版本。
## 这对搜索引擎意味着什么
把两百多条声明指向6个页面,搜索引擎会怎么处理?现实是它不会报错,也不会有任何提示,它只是把这些声明的可信度整体调低。
收录、排名、流量是三件事,没流量先分清卡在哪 (https://zhangwenbao.com/indexed-ranked-traffic-three-layer-seo-diagnosis.html)。
系统的判断会写在状态里,八种未编入索引状态各自的决策路径 (https://zhangwenbao.com/gsc-index-coverage-states-discovered-crawled-canonical-mechanism.html)。
道理不难理解:如果一份对应关系表里,几十个键映射到同一个值,那这份表提供的信息量就很有限。系统更倾向于回到它能自己观察到的东西——页面实际是什么语言、用户来自哪里、哪个版本的表现更好。
这正是广告那边正在发生的事情的翻版。当自填的声明信息量不足时,观察者不会去质问你,它只会绕过你。
## 对AI搜索这一侧的影响可能更大
前面讲的都是传统搜索引擎怎么处理这份声明。但现在还有一批新的读取方——那些替用户组织答案的系统。
它按块而不是按页检索,内容分块优化该怎么做 (https://zhangwenbao.com/chunk-optimization-ai-rag-retrieval-geo.html)。
跨市场的知识污染挡不住,为什么hreflang在AI时代不够用 (https://zhangwenbao.com/international-seo-global-knowledge-integrity-cross-market-ai.html)。
它们对这一层的敏感度更高,原因有两个。
一是它们通常只取一个版本。传统搜索可以给不同地区的用户展示不同版本,是一对多的关系;而生成式回答往往只引用一个来源,是一对一的。当你的对应关系模糊时,它挑哪一版就带有随机性。
二是它们更依赖内容本身而不是声明。这类系统读的是页面正文,对元信息的依赖比传统抓取低。这意味着一个内容质量高但声明混乱的页面,可能反而更容易被正确处理;而一个声明工整但内容单薄的页面,讨不到好处。
合起来看,结论跟前面一致:把力气放在让每个版本的内容真的对得起它声称服务的那个市场,比把声明写工整重要得多。在只取一个版本的场景下,被选中的那一版如果内容不行,声明写得再漂亮也救不回来。
## 一个可以立刻验证的做法
想知道自己的多语言站在这类系统眼里长什么样,有个很直接的试法:用目标市场的语言,问一个你的品类里最典型的问题,看它引用了你的哪一版页面。
换个引擎结论可能就变了,跨引擎规则的保留与改写清单 (https://zhangwenbao.com/geo-transfer-checker-cross-engine-rule-guide.html)。
想批量试,一份内容跑五个引擎看谁愿意引用 (https://zhangwenbao.com/ai-search-simulator-5-engine-citation-probability-guide.html)比手工问快得多。
常见的三种结果各有含义。引用了对应语言的版本,说明这一层是通的;引用了英语版本,说明你的本地版本要么没被识别,要么内容强度不够;根本没提到你,那是另一个问题,跟这一层无关。
这个试法几分钟就能做完,比任何声明校验工具都直观,因为它检验的是最终结果而不是中间过程。做多语言站的团队值得每个季度跑一遍,成本几乎为零。
## 把这个比值做成一个体检指标
声明条数除以去重地址数,这个比值可以直接当成一个自查指标用,本文姑且叫它虚声明倍率。算法一分钟就能跑:数一遍声明条数,数一遍不重复的目标地址,两个数一除。
另一个不用工具就能看的指标在日志里,AI爬虫到底有没有抓你的站 (https://zhangwenbao.com/seo-log-file-analysis-guide.html)。
把单项指标扩成体系,企业网站SEO审计该查什么 (https://zhangwenbao.com/enterprise-website-seo-audit-framework.html)有一份可裁剪的框架。
倍率区间 | 判读 | 建议动作 |
1.0到1.2 | 几乎一条声明对一个页面 | 健康,不用动 |
1.2到2.0 | 存在同语言多市场的正常重复 | 抽查一遍即可 |
2.0到4.0 | 兜底型声明开始变多 | 核对哪些市场真有版本 |
4.0以上 | 大量市场共用同一页面 | 删掉多余声明,交给默认项 |
本次数据里73个站的分布:倍率在1.2以下的属于多数,但落在4.0以上的有好几个,最极端那家是39.3倍。
这个指标的好处是不需要任何外部工具,也不需要爬全站,看一个首页的源码就能算。坏处是它只能发现虚声明,发现不了漏声明——如果你真有德语版本却没声明,这个指标看不出来。
## 更细的一个切法
如果想再准一点,可以把重复分成两类分别数。
变体页面的对应关系更复杂,变体的标记、规范网址与地址三层治理 (https://zhangwenbao.com/woocommerce-product-variations-seo-schema-canonical-url-deep-dive.html)。
多语言加多货币会叠加出更多组合,hreflang、网址与价格标记的三层避坑 (https://zhangwenbao.com/woocommerce-multilingual-multicurrency-seo-hreflang-url-schema.html)。
同语言不同地区指向同一页,比如英语给英国和爱尔兰指同一个页面,这是规范明确允许的正常写法,不该算作虚声明。
不同语言指向同一页,比如德语和法语都指向同一个英语页面,这个就有问题了。它等于在说“这个页面既是德语版又是法语版”,而页面本身只有一种语言,这两条声明里至少有一条是错的。
本次没有把这两类分开统计,因为要判断需要回去看每个页面的实际语言,成本高。但从抽样看,第二类在倍率高的站里占比不低——那些把两百多个市场指向6个页面的站,必然包含大量不同语言指向同一页的情况。
如果只做一项自查,建议做这一项:把所有声明按目标地址分组,看同一个地址下有没有出现两种以上的语言码。有,就是明确的错误,不是风格问题。
## 这份数据的局限,得说在前面
上面这些数字有几处边界,读的时候要带着。
让工具替你审计有三个前提,数据、方法与人工复核 (https://zhangwenbao.com/ai-seo-geo-audit-agent-pitfalls.html)缺一不可。
没有对照组就会高估,量出74%的差异补上对照之后只剩2.2% (https://zhangwenbao.com/page-content-jitter-baseline-seo-diff-false-positive.html)。
第一,只看了首页。很多站的商品页和分类页有各自的声明,粒度可能比首页细,也可能更粗。首页通常是声明写得最全的一页,所以这里的数字更可能是高估而不是低估。
第二,没有核实目标地址是否可访问。只统计了地址是否重复,没有逐个请求确认它们返回200。按经验,声明里指向已下线市场的死链是常见问题,所以真实的有效声明数只会比统计值更低。
第三,样本偏向欧美消费品牌。这批站以服饰、家居、户外、消费电子为主。做工业品、做单一市场、做本地服务的站,情况会完全不同——单一市场的站根本不需要这一层。
第四,也是最要紧的一条,抓取从一个固定地点发出。前面说过有12个站返回了中文版,这意味着这些站的声明结构可能在别的地方看起来不一样。这个偏差没法消除,只能说明。
## 如果你要复现
方法本身很简单,不需要爬虫框架。把目标站首页抓下来存成文件,用正则把所有带alternate和hreflang的链接标签取出来,每条记下语言地区码和目标地址,然后数三个数:总条数、去重后的地址数、去重后的语言数。
不写脚本也能查一部分,高级搜索运算符的实战指令 (https://zhangwenbao.com/google-search-operators-seo-intelligence.html)够用。
不想自己写脚本,结构化数据审计工具 (https://zhangwenbao.com/schema-extractor-structured-data-audit-guide.html)一次能扒清页面里的五种格式。
要注意的是取标签时别只匹配一种属性顺序。有的模板把rel写在前面,有的把hreflang写在前面,只按一种顺序匹配会漏掉一批站。本次第一版脚本就漏过,改成先取出所有链接标签、再逐个判断属性之后才对上。
另外默认项要单独计数,别混进语言统计里。它不是一种语言,把它算进去会让语言种类数虚高,也会让重复率的计算失真。
## 换个角度:这份声明到底给谁省了事
还有一个角度值得想一想。这套对应关系机制当初被设计出来,解决的是谁的问题?
表面上是解决用户的问题——让德国用户看到德语页面,让美国用户看到美元价格。但仔细想,用户其实不需要这个东西:用户只要打开一个页面,看到自己看得懂的内容和能付的钱就行了,中间怎么实现的他不关心。
真正需要它的是搜索引擎。它面对同一个品牌的十几个近似页面,需要决定给哪个用户看哪一版,而这些页面内容高度相似,光靠内容判断成本很高。于是它请你来说明。
理解了这一点,就知道该怎么写这份声明:它不是你的展示位,是你替系统省下的那部分判断成本。你多提供一条真实的对应关系,它就少做一次猜测;你多提供一条虚的,它就多一次误判,而误判的代价最终落在你身上。
按这个角度重看那个236比6,问题就清楚了。那236条里有230条不但没帮系统省事,还让它多了230次需要排除的干扰。好心办坏事,说的就是这种。
## 顺带回答一个很常见的疑问
经常有人问:既然搜索引擎自己能判断,那这套东西是不是迟早也会像语言定位一样被删掉?
短期不会,原因和前面那条判据一致:页面之间的对应关系,不完全写在页面上。
机器能读出一个页面是德语的,但读不出“这个德语页面是那个英语页面的德国版本”——除非两个页面内容确实一一对应,可现实中它们经常不是,德国站可能少了几个品类,多了几个本地商品。
所以这份声明提供的是一个真正的增量信息,短期内不可替代。它和语言定位的区别在于:一个描述的是内容属性(可读出),一个描述的是版本关系(读不出)。前者会被收回,后者不会。
但这个结论有个前提:你提供的对应关系得是真的。如果它大部分是虚的,那系统就会退回到自己判断,那时候这份声明确实就跟被删掉没区别了——不是被官方删掉,是被静静地忽略掉。
## 把国家码当语言码写,会怎么样?
顺着明细还翻出一批写错的码,数量不多但很典型,值得单独说。
这套基础设施靠的人比想象中少,取决于几个志愿者今年还有没有提交代码 (https://zhangwenbao.com/minor-language-open-source-dictionary-maintenance.html)。
语言码这套体系本身怎么运作,187份裁决书里提到政治的只有1份 (https://zhangwenbao.com/minor-language-code-request-rejection.html)拆得很细。
## 七个不认识的码
2469条声明里,语言部分不在正式语言列表中的有7种写法。挑几个说明问题的:
差几个字母就是两个意思,无糖和含糖被词干还原并成了一个 (https://zhangwenbao.com/minor-language-negation-affix-exclusion-keyword-trap.html)。
谁在替这些语言申请代码,616份申请书里过半出自同一个组织 (https://zhangwenbao.com/minor-language-code-who-files-requests.html)。
有一条写成韩国的国家码而不是韩语的语言码。这两个码长得像,含义完全不同——一个是国家,一个是语言。规范要求语言在前,这个位置只能放语言码。
另一条写成日本国家码加日本国家码的组合。写的人大概觉得“日本的日本版”,但规范眼里这是一个不存在的语言。
还有一条用了印尼语的旧代码。那个码在几十年前被正式替换过,现在的解析器多半仍能识别,但它已经是废弃写法了。
## 为什么写错了没人发现
这才是重点。这些码错了之后会发生什么?什么都不会发生。
静默失败的另一种形态,人机验证屏被当成正文索引 (https://zhangwenbao.com/bot-check-screen-deindex-canonical.html)。
没有反馈的声明还有一批,接口和订阅源拿什么说自己不想被收录 (https://zhangwenbao.com/machine-readable-endpoints-x-robots-tag-noindex-audit.html)。
页面照常打开,搜索引擎照常抓取,后台不会亮红灯,也不会有邮件通知。唯一的后果是这条声明被静默忽略,而“被忽略”和“生效了但没效果”从外部看一模一样。
这就是不可核验字段的典型症状:错误不会引发反馈,于是错误会一直留在那里。对比一下页面顶部那个语言属性,写错了浏览器行为立刻变化,所以那一栏136个站只错了1个。
两个字段的准确率差距,根源就在这里——不是人的水平差距,是反馈回路的差距。
## 还有一类错更隐蔽:码是对的,指向是反的
比语言码写错更难发现的,是码全对但对应关系接反了。
对照两份结果才看得出来,渲染对比器能揪出爬虫和用户看到的差异 (https://zhangwenbao.com/render-compare-bot-user-cloaking-detection-guide.html)。
语法层的错至少还能校验,一个尾逗号就能让整页结构化数据失效 (https://zhangwenbao.com/json-ld-validator-syntax-debug-guide.html)。
典型形态是德语声明指向法语页面、法语声明指向德语页面。这种错误在手工维护的站上并不少见,通常发生在批量修改的时候——复制粘贴改了一半。
它的隐蔽之处在于:所有校验工具都会说没问题。码合法,地址可访问,格式正确,唯一的错误是语义层面的,工具查不出来。
要发现这类错,只能做一次交叉验证:逐条打开声明里的目标地址,确认那一页的实际语言和声明的语言码对得上。这个动作没法自动化到完全可靠,因为需要判断页面语言,但抽查十来条就能发现大部分问题。
建议在两个时机做这个抽查:新增语种之后,以及任何一次批量改动之后。这两个时点是接反最容易发生的地方。
## 顺手能查的两个地方
要自查其实不难。语言码是否合法,用子标签查询工具逐个敲一遍就知道;页面顶部那一栏的写法要求,语言属性的规范说明 (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang)写得很清楚,包括为什么应该写具体值而不是留空。
要补别的标记,结构化数据生成器的13种类型 (https://zhangwenbao.com/schema-generator-jsonld-13-types-guide.html)够覆盖多数页面。
另一类容易写错又没人提示的是日期,从站点地图的更新时间到结构化数据的日期 (https://zhangwenbao.com/timestamp-converter-unix-epoch-sitemap-lastmod-guide.html)。
更省事的办法是把校验做成发布流程的一部分,让不合法的码根本进不了模板。这比事后审计有用得多,因为事后审计需要有人记得去做,而这类问题恰恰是最容易被忘掉的。
## 还有几个似是而非的写法
除了明确非法的,数据里还有几个属于“规范上说得通、实际很可疑”的写法,值得一并提一句。
合规检测同样会把对的判成错的,执法指南里的例外被标成高风险 (https://zhangwenbao.com/ad-word-checker-exception-overlap-falsepositive-guide.html)。
合法和合理的差别在词表上更明显,法律早替你定好了这个东西该叫什么 (https://zhangwenbao.com/minor-language-legal-product-name-keyword.html)。
有站写了白俄罗斯语加白俄罗斯地区的组合。这个组合在规范上完全合法,但从生意角度看,一个消费品牌真的做了白俄罗斯语版本吗?更可能的情况是有人在生成脚本里把国家列表和语言列表做了笛卡尔积。
还有加利西亚语加西班牙和巴斯克语加西班牙这两条。这两种语言在西班牙确实是官方地位的地区语言,写法完全正确,属于做得很细的少数派——如果它们背后真有对应版本的话。
还有一个只写了单个字母的码。这个显然是占位符或者测试残留,正式环境里不该出现。
这几个例子放在一起看,能看出一个模式:合法与合理是两回事。校验工具只能告诉你合不合法,合不合理只能靠人回去对业务。而这一步,恰恰是最容易跳过的。
## 大小写和分隔符的写法
顺便说说格式细节,因为这是被问得最多的问题之一。
写法细节影响解析的还有面包屑,四种类型与结构化数据实操 (https://zhangwenbao.com/seo-breadcrumbs-types-schema-implementation.html)。
大小写规则在标题上更麻烦,那个会毁掉品牌名的坑 (https://zhangwenbao.com/titlecase-converter-ap-apa-chicago-title-case-seo-guide.html)值得看一眼。
规范对大小写不敏感,语言码写小写、地区码写大写只是约定俗成的可读性习惯,全小写完全合法,不会影响解析。本次数据里136个站的顶部语言属性有1个用了大写语言码,也不算错。
分隔符就不一样了。规范要求用连字符,而有些系统里的地区标识用的是下划线写法。下划线在语言标记里是不合法的,写进去这条声明会被丢弃。本次在顶部语言属性那一栏没发现下划线写法,但这个错误在社交分享标记那边比较常见,因为那个规范恰好要求用下划线,两边容易搞混。
结论很简单:页面语言属性和hreflang用连字符,社交分享地区标记用下划线,两套规范不通用,别互相抄。
## 广告那边删掉之后,你该盯什么?
回到9月那个变更。既然勾选框没了,那要不要做点什么?官方的说法是现有广告系列不需要动,但有几件事值得提前看。
不投广告也有入口,怎么让商品免费上购物结果 (https://zhangwenbao.com/google-free-product-listings-merchant-center.html)。
付费数据本来就该反哺自然搜索,6类付费数据怎么反哺SEO决策 (https://zhangwenbao.com/ppc-data-feedback-seo.html)。
## 三个监控点
第一,搜索词的语言构成。变更之后触发你广告的搜索词,语言分布会不会变。如果原来锁死英语,现在放开,很可能会出现一批非英语搜索词。这不一定是坏事,但你得知道它发生了。
搜索词的构成还能挖出更多东西,用正则挖AI搜索提示词的五步 (https://zhangwenbao.com/gsc-regex-mine-ai-search-prompts-guide.html)。
要盯就得先把数据凑齐,把多平台花费拉进来算统一回报 (https://zhangwenbao.com/ga4-import-ad-cost-data-non-google-blended-roas.html)。
第二,地理流量的分布。语言判断放宽之后,某些市场的曝光量可能明显变化。特别是那些双语或多语国家,比如比利时、瑞士、加拿大,变化会更明显。
第三,落地页的语言和素材的语言对不对得上。这一条最实际。既然平台改看这两样,那它们就从“无所谓”变成了“判断依据”。素材写英语落地页是德语,这种历史遗留的错配以前靠语言定位兜住了,现在兜不住。
## 有一类账户要提前动手
报道里提到一个容易被忽略的问题:受监管行业的合规记录。
合规架构别毁掉数据,同意横幅怎么配才不影响SEO数据 (https://zhangwenbao.com/seo-legal-compliance-gdpr-ccpa-consent-mode-cross-border-architecture.html)。
合规这类事得提前跟法务对齐,法务与SEO协作的七个动作点 (https://zhangwenbao.com/legal-counsel-seo-collaboration-7-actions-privacy-trademark-incident.html)。
金融、医疗、博彩这类行业,有时需要证明某条广告只投给了特定语言的用户,这是合规要求而不是投放偏好。以前语言定位这个设置本身就是证据——设置里写着只投英语,导出来就是一份记录。
现在这个设置没了,而平台没有提供替代的报表来说明某条广告实际投给了哪些语言的用户。这就出现了一个空档:要求还在,证据没了。
做这几个行业的团队,最好在9月之前把现有的账户结构和设置导出存档,同时想清楚之后拿什么当证据。能想到的替代品只有一个:把语言差异做进账户结构里——不同语言用不同广告系列、不同素材、不同落地页,用结构本身来承担原来那个勾选框的说明责任。
## 广告和自然搜索的语言口径要对齐
还有一件很少被提的事:同一个站,广告落地页和自然搜索的着陆页,语言版本经常不是同一套。
付费与免费混排的另一处,图片搜索开始混入购物广告 (https://zhangwenbao.com/google-image-search-shopping-ads-organic-traffic.html)。
付费和自然在新场景里也不是一条通道,5万商业词说三条通道各走各的 (https://zhangwenbao.com/ai-mode-ads-citation-organic-three-channels.html)。
常见形态是投放团队为了转化率单独做了一批落地页,这些页面往往不进站点导航、不在站点地图里、也没有hreflang声明。它们在广告体系里活得好好的,在自然搜索体系里几乎不存在。
过去这没什么问题,两套体系各管各的。但这次变更之后,广告投放的语言判断开始依赖落地页语言——而落地页恰恰是这个站里语言标注最不规范的一批页面。
建议做一次对齐检查:把在投的落地页列出来,逐个确认三件事。页面顶部的语言属性有没有写、写得对不对;页面上的文案是不是纯粹一种语言,有没有中英混排的残留;以及广告素材的语言和落地页是不是一致。
这三项都是几分钟能查完的事,但它们从9月起会直接影响投放范围。一个语言标注混乱的落地页,以前只是不好看,之后会变成投错人。
## 顺带说一句反向的机会
这次变更对一类广告主是明确利好:做多语言但只有一套素材的团队。以前语言定位设置不当会人为切掉一部分流量,现在这个人为限制没了,覆盖会自然变宽。
接得住流量还得靠页面细节,被低估的九个反直觉设计杠杆 (https://zhangwenbao.com/counterintuitive-ui-design-conversion-levers.html)。
接住多出来的流量靠的是页面,高转化电商页面的8模块90天实战 (https://zhangwenbao.com/high-conversion-ecommerce-cro-seo-90day-playbook.html)。
要接住这部分流量,前提是落地页得撑得住。一个用英语接住了德国用户的广告,如果落地页也是英语,转化不会太差;但如果落地页跳到了一个半成品的德语版本,那就是在浪费点击。
## 9月之前值得跑一遍的清单
把要做的事收成一份清单,按优先级排。做多语言投放的团队,这几项在变更生效前跑完比较稳妥。
有时间窗的事都该提前排期,大促SEO从T减8到T加4的路线图 (https://zhangwenbao.com/maximize-seo-traffic-conversion-during-promotion.html)。
留基线这件事最好做成固定动作,月报季报的模板与数据管线 (https://zhangwenbao.com/seo-monthly-report-template-data-pipeline-word-ppt.html)可以借结构。
动作 | 为什么现在做 | 大概耗时 |
导出现有语言定位设置存档 | 变更后这个设置就没了,合规留痕只能靠现在 | 半小时 |
核对素材语言与落地页语言是否一致 | 这两样从无所谓变成判断依据 | 看素材量 |
记录变更前四周的搜索词语言构成 | 没有基线就看不出变化 | 一小时 |
记录变更前四周的地区流量分布 | 同上 | 一小时 |
检查接口自动化脚本有没有写语言条件 | 变更后会直接报错,不是静默忽略 | 看脚本量 |
确认多语言落地页都能正常打开 | 覆盖变宽之后,冷门版本会开始有流量 | 半天 |
这里面最容易被跳过、后果又最实在的是第三和第四项。变更之后如果没有变更前的基线,你就没法判断流量的变化是这次调整造成的,还是别的原因。而这类基线一旦错过时间窗就补不回来了。
## 一个容易踩的坑
还有一件事值得提醒:别在这个节骨眼上同时改别的东西。
同时改多项还会毁掉统计功效,样本量怎么算才能避免假胜利 (https://zhangwenbao.com/dtc-ab-test-sample-size-3-formulas.html)。
想保住归因能力,怎么设计实验才知道哪条外链真撬动了排名 (https://zhangwenbao.com/backlink-attribution-experiment-design-rank-uplift.html)那六步同样适用。
9月下旬这个变更是全账户生效的,如果你恰好在同一时间调了出价策略、换了落地页、或者改了受众设置,之后数据一旦波动,你分不清是哪一项造成的。
比较稳的做法是在变更前后各留两周的静默期,什么都不动,让这一项变更的影响单独跑出来。这不是保守,是为了保住归因能力。做投放最贵的成本从来不是预算,是搞不清楚哪个动作起了作用。
## 网站这边现在该改什么?
回到hreflang。看完上面的数据,动作其实很清楚。
改之前先看主体内容占比,模板与广告的七大稀释陷阱 (https://zhangwenbao.com/main-content-ratio-boilerplate-dilution-page-layout.html)。
这一层属于技术侧的常规体检,AI时代电商技术SEO的五个新层 (https://zhangwenbao.com/technical-seo-audit-five-new-layers-ai-era.html)有完整清单。
## 先把可核验的那一半做对
页面顶部那个语言属性,如果你的站在97.8% 之外的那2.2% 里,先补上。这一栏成本几乎为零,收益是让所有读取方——浏览器、辅助阅读工具、搜索引擎、AI抓取器——第一时间知道这一页是什么语言。
内容分层怎么搭,一层SEO一层GEO的五板块落地手册 (https://zhangwenbao.com/seo-geo-dual-layer-content-architecture-five-blocks-rebuild.html)。
批量生成的页面更要保证语义正确,从模板化转向语义化的八步 (https://zhangwenbao.com/semantic-programmatic-seo-blueprint.html)。
补的时候注意一点:这一栏应该写具体值,不要写通用占位。写成表示“未知”的值,等于什么都没说。
另外,如果你的站有多语言版本,确认这一栏是跟着内容模板动态生成的,不是硬编码在头部的一个固定值。这次唯一那个填错的站,八成就是这个原因。
## 地区声明要有对应的东西
这是本篇最想强调的一条:声明一个地区之前,先确认那个地区真的有一个属于它的页面。
无对应内容的地址怎么处理,筛选网址的三类判别法 (https://zhangwenbao.com/filter-generated-pages-robots-txt-disallow.html)可以借判据。
无中生有的地址是另一个大坑,筛选过滤产生的海量网址怎么治理 (https://zhangwenbao.com/faceted-navigation-seo-crawl-budget-index-control.html)。
如果没有,正确做法不是给它硬指一个最接近的版本,而是用默认项。默认项存在的意义就是承接所有没有专门版本的市场,它是为兜底设计的,而具体的语言地区声明不是。
本次数据里,73个有声明的站中有66个用了默认项,比例不低,说明大家知道有这个东西。问题是用了默认项之后,仍然又把两百多个市场逐个指了一遍,等于同一件事说了两遍,还是用不同的语气说的。
## 模板层怎么改才不会反复出问题
手工维护这一层是不可能长期正确的,站一大必然出错。要让它稳定,得从模板层解决,有三个原则。
插件层的逐项取舍,一个出海独立站的设置清单 (https://zhangwenbao.com/rank-math-best-seo-settings.html)可以对着抄。
模板和插件各写一份是通病,两套结构化数据怎么归一 (https://zhangwenbao.com/cms-seo-plugin-theme-tag-conflict-duplicate-canonical-title-og-schema-cleanup.html)。
第一,声明由版本清单生成,不由市场清单生成。这是最关键的一条。很多站的模板逻辑是遍历“我们要卖的国家”,给每个国家生成一条声明——这样必然产出大量虚声明。正确的逻辑是遍历“我们实际拥有的内容版本”,有几个版本生成几条。
第二,地址由路由算出来,不写死。声明里的目标地址应该由同一套路由规则生成,跟页面本身的地址算法保持一致。写死的地址在改版、换域名、调整路径结构时必然失效,而且失效了没有任何提示。
第三,页面不存在就不生成声明。模板里要有一道判断:这个版本的这个页面到底存不存在。很多重复指向就是因为某个语种缺了某个页面,模板兜底指向了默认版本,于是产生了一条错误的对应关系。缺页面的正确处理是不声明,不是指向别处。
## 顺手提一句自动翻译版本
还有一种常见情况:用机器翻译批量生成了几十个语种的版本,然后给每个都写了声明。
母语者说读着自然不能当验收,小语种内容的审校验收清单 (https://zhangwenbao.com/minor-language-native-review-acceptance-checklist.html)。
省下的审校最后是拿收录和排名分期还的,机器翻译直接上线的代价 (https://zhangwenbao.com/machine-translation-direct-publish-search-risk-quality-line.html)。
这种做法在技术上没错,声明和页面是一一对应的,倍率也很健康。问题出在内容质量上——如果那些自动翻译的版本读起来不通顺、术语混乱、甚至有事实错误,那么声明得越工整,被抓取和评估的量就越大,暴露的问题也越多。
这是少数几个“做得越规范越吃亏”的场景。合理的做法是先确认翻译质量到了能见人的程度,再把声明补上;而不是先把架子搭全,指望内容以后慢慢改。
## 三件不值得做的事
不要为了覆盖更多市场而穷举地区码。把两百多个国家全声明一遍,不会带来两百多个市场的排名,只会稀释这份声明的可信度。
对抗式做法为什么注定失败,七大合作型优化策略 (https://zhangwenbao.com/geo-cooperative-optimization-vs-adversarial-attack.html)是反面。
穷举式的做法在别处也一样不灵,关键词堆砌和对抗攻击为何注定失败 (https://zhangwenbao.com/geo-keyword-stuffing-adversarial-attack-cooperative-optimization.html)。
不要在语言位置上写国家码。看起来是小错,实际是整条声明被丢弃。
不要指望它能替你解决内容问题。这个标签只负责说明版本之间的对应关系,它不能让一个英语页面在德国排得更好。真正决定的还是页面本身对那个市场的用户有没有用。
动作 | 成本 | 能不能被核验 | 值不值得做 |
补齐页面语言属性 | 接近零 | 能 | 值得,优先 |
校验语言码合法性 | 低 | 能 | 值得 |
清掉没有对应页面的地区声明 | 中 | 能 | 值得 |
穷举地区码 | 低 | 不能 | 不值得 |
为每个市场做真实的本地版本 | 高 | 能 | 看生意规模 |
## 怎么说服团队去做这件删减
技术上怎么改都好说,难的是让人同意删。声明这东西看着像资产,删掉需要理由。
最有效的说法不是讲原理,是把数字摆出来:我们声明了40个市场,实际有内容的是2个。这一句话通常比任何解释都管用,因为它把一个抽象的技术问题变成了一个谁都能判断的常识问题。
第二有效的说法是算风险:如果某个市场有语言方面的法规要求,我们声明提供了那个语言的服务,实际给的是英文页面,这个口径对不上。这条对合规意识强的公司特别有用。
最不该用的说法是“这样对SEO好”。这句话在多数公司里已经贬值了,说了也推不动,因为它无法被验证也无法被追责。
删完之后记得留一份改动前的清单存档。不是为了回滚,是为了三个月后有人问“我们德国的声明怎么没了”的时候,你拿得出当时的判断依据。这个动作看着多余,但在跨团队协作里能省掉一整轮争论。
## 改的优先级怎么排
如果手上是一个已经跑了几年的多语言站,上面这些要一次全改完不现实。给个排序。
改完多久见效要有合理预期,收录、爬坡到起量的真实时间线 (https://zhangwenbao.com/how-long-does-seo-take-realistic-timeline.html)。
排查顺序比排查手段重要,从症状分诊到动手修复的急救手册 (https://zhangwenbao.com/google-not-indexed-fix-playbook.html)。
第一优先,把明确错误的删掉。非法语言码、指向不存在页面的声明、指向404的地址。这三类是纯粹的减分项,删掉零风险。
第二优先,把虚声明降下来。算一遍前面那个倍率,超过4的部分先处理。处理办法通常不是新增页面,而是删掉那些没有真实版本对应的市场声明,交给默认项。
第三优先,补齐真实存在但没声明的版本。这一类是加分项,但优先级排在后面,因为漏声明的损失通常小于虚声明的损失——漏了顶多不被识别,虚了会拉低整份声明的可信度。
第四优先,才是做新的本地化版本。这属于内容投入,跟声明层没关系,该按生意规模决策,别因为声明写得好看就去做。
## 一个真实的取舍
去年帮一个做婴童用品的独立站梳理这一层,他们的情况很典型:声明了40多条,实际只有英语和德语两套内容,德语那套还只翻译了商品页,博客和帮助中心全是英语。
语种投入不只是内容成本,多语种客服的四层SLA与工单分流 (https://zhangwenbao.com/dtc-overseas-customer-service-multilingual-4-layer-sla-ticket-routing.html)也要一起算。
小语种要不要上、上到什么程度,从插件选型到内容本地化的四步 (https://zhangwenbao.com/wordpress-minor-language-seo-localization.html)可以对着算。
当时团队的第一反应是补翻译,把德语版本做全。但算下来那是几十万字的工作量,而德国市场当时只占营收的一成出头。
最后的做法是反着来:把40多条声明砍到6条,德语只声明那些真有德语内容的页面类型,其余全部交给默认项指向英语版本。翻译一个字没加,三个月后德语页面的收录反而变好了。
这件事给保哥的印象很深。声明层的优化,减法往往比加法有效,因为它降低的是系统的困惑度,而困惑度一降,剩下那些真实的对应关系反而更容易被采信。
## 这条规律还会在哪些字段上重演?
把广告那边和网站这边放在一起看,能提炼出一条相当稳的判据。
响应头那一层也有一批同类声明,X-Robots、缓存与Vary的实战机制 (https://zhangwenbao.com/http-response-headers-seo-x-robots-cache-vary-canonical-mechanism.html)。
少数仍被照办的自填指令是这个,加上noindex之后多久从结果里消失 (https://zhangwenbao.com/when-does-noindex-page-remove-from-google-search-results.html)实测过六种场景。
## 判据只有一句话
一个自填字段能活多久,取决于观察者独立获得同一信息的成本什么时候降到足够低。
系统怎么决定顺序,从召回到重排的四阶段 (https://zhangwenbao.com/search-ranking-pipeline-retrieval-rerank-architecture.html)决定了哪些信号还有用。
旧公式失效的完整过程,为什么该转向主题权威 (https://zhangwenbao.com/keyword-seo-strategy-evolution-2026.html)那篇有脉络。
语言这件事,二十年前机器判断一段文字是什么语言还不那么可靠,那时候你的声明是有价值的;今天判断语言是件极其廉价的事,于是你的声明就从判据降级成了参考,再降级成了噪音。
页面主题也走过同样的路。早年靠关键词标签告诉搜索引擎这一页讲什么,后来机器能读懂全文了,那一栏就废了。
## 下一批候选
按这条判据往前看,有几个字段处在不同的阶段。
页面类型声明的用法在变,论坛和问答结构化数据对AI搜索有什么用 (https://zhangwenbao.com/google-forum-qa-structured-data-ai-bot-label.html)。
哪些类型真有人用,官方第一次公开的全网使用数据 (https://zhangwenbao.com/schema-org-usage-statistics-priority-guide.html)给了底表。
已经废掉的:页面自称的关键词、自称的更新频率与优先级。
正在降级的:页面自称的正式地址——搜索引擎会参考你的声明,但它有自己选定的一版;页面自称的语言与地区,就是本篇讲的这一栏。
下一批可能轮到的:结构化数据里的页面类型声明。你说这一页是商品页还是文章页,机器读一遍页面结构其实也判断得出来,只是目前成本还没降到可以完全不看你的程度。
短期内不会动的:那些答案不在页面上的字段——你回传的转化价值、你的内部成本、你对客户的分层。这些平台读不出来,只能问你。
## 怎么提前认出下一个要被收回的字段
与其等公告,不如自己判断。有三个信号出现时,一个自填字段基本进入倒计时。
官方给工具划的信任边界值得逐字读,这份指引该怎么读 (https://zhangwenbao.com/google-third-party-seo-tools-aeo-geo-guidance.html)。
官方叫停过的动作值得逐条看,AEO和GEO到底还是不是SEO (https://zhangwenbao.com/googles-ai-search-guide-aeo-geo-still-seo.html)整理过一份。
信号一,平台开始展示它自己的判断结果。比如后台某处开始显示“系统检测到的类目”“系统识别的语言”,同时还留着你手填的那一栏。这是典型的过渡期形态——两个值并排放着,本身就说明它已经不需要你了,只是还没好意思删。
信号二,官方文档的措辞从“设置”变成“提示”。用词从“指定”“选择”变成“建议”“参考”,说明权重已经降了。这个变化通常发生在正式删除的一到两年前。
信号三,帮助文档开始强调别的东西。比如这次,官方在讲变更时反复强调素材语言和落地页语言的重要性——这是在提前告诉你新的判断依据是什么。平台在拿走一样东西之前,通常会先花很长时间宣传替代品。
这三个信号在自然搜索侧同样适用。哪个元素的官方说法从“指令”变成了“强烈提示”,哪个元素就在同一条路上。
## 对做国际站的人的一个提醒
这条规律有个不太舒服的推论:你在声明层做的功夫,长期价值是递减的;在内容层做的功夫,长期价值是递增的。
内容层要做的还有作者这一块,本地媒体里早有另一种拼法 (https://zhangwenbao.com/minor-language-eat-local-author-byline-credential-signals.html)。
内容层的功夫具体做在哪,那几个最像装饰的信任元素恰恰是搜索量最高的购买词 (https://zhangwenbao.com/minor-language-landing-page-trust-signals-payment-address-support.html)。
把hreflang写得再完美,也不如真的做一个像样的德语版本。前者是在告诉系统你有什么,后者是让系统能自己看到你有什么。当系统看得越来越清楚时,告诉它的那一步就越来越不重要。
## 这条判据在别的平台上一样成立
不只是搜索和广告。把这条判据拿去看其他平台,能省下不少无用功。
商品标识是另一类必须由你提供的事实,商品编码怎么设置才利于SEO (https://zhangwenbao.com/product-gtin-seo.html)。
商品数据流那边正在做同一件事,页面标记和数据源的分类终于对上了 (https://zhangwenbao.com/merchant-listing-category-property-google-product-taxonomy.html)。
商品数据流里,你填的类目正在被平台自动纠正——因为图片和标题足够判断这是什么品类。而你填的成本价它永远不会改,因为它不知道。
社交平台上,你给内容打的话题标签权重在持续下降,因为内容识别能力上来了。而你设置的目标受众仍然有效,因为那是你的意图。
应用商店里,你填的应用分类在被行为数据修正;你填的年龄分级则一直有效,因为那涉及合规责任,平台不愿意替你判断。
规律一致得有点无聊:凡是能从你交上来的材料里读出来的,迟早不再问你;凡是读不出来的,永远问你,而且要你负责。
## 顺带一个反向的用法
这条判据还能反过来用,用来判断该在哪里花力气做优化。
技术侧该做到什么程度,抓得到、读得懂、引得出这三关 (https://zhangwenbao.com/geo-technical-optimization-crawl-render-extract-guide.html)。
该在哪儿花力气,AI搜索可见性的五维深层策略 (https://zhangwenbao.com/ai-search-visibility-deep-seo-strategy.html)给过一份排序。
如果一个字段属于“平台能自己读出来”那一类,那么优化它的正确方式不是把字段填得更漂亮,而是把它要描述的那个事实本身做扎实。语言声明写得再规范,也不如页面真的用那种语言写得地道。
如果一个字段属于“平台读不出来”那一类,那么它就是你为数不多能主动影响系统的地方,值得认真填、填准、并且保持一致。这一类字段填错的代价,比前一类高得多,因为没有任何人会替你纠正。
两类字段的优化策略完全相反,而多数团队用的是同一套方法——把所有能填的都填满。填满不是策略,分清哪些该填、哪些该做,才是。
## 只做一个语言版本的站,反而最容易做对
最后说一种很常见的情况:整个站就一个语言版本,卖到几十个国家。这种站要不要做hreflang?
要不要扩市场本身是个决策,七步决策与十二周落地 (https://zhangwenbao.com/niche-market-selection-ai-mode-7step-12week-decision.html)可以照着走。
单站还是多站本身就是一次取舍,建一个大站还是多个品牌小站 (https://zhangwenbao.com/one-authority-site-vs-multiple-niche-sites-seo-decision.html)。
## 三种情形,三种做法
第一种,一个版本、一个域名、卖全球。不需要hreflang。没有别的版本,就没有对应关系要声明。这时候写任何声明都是在无中生有。
多开一个市场的真实成本,从月租、交易费到隐藏开销的成本账 (https://zhangwenbao.com/shopify-cost-breakdown-2026.html)。
平台层的架构选择会决定这一层怎么写,多市场还是多店铺,先算清SEO架构这笔账 (https://zhangwenbao.com/shopify-markets-vs-plus-expansion-stores-international-seo-architecture.html)。
第二种,一个语言、多个地区站点。比如同样是英语,但分了英国站、美国站、澳洲站,价格和物流不同。这时候需要声明,而且这正是同语言多地区的标准用法,重复指向不同地址是完全正确的。
第三种,多语言但覆盖不全。做了英语、德语、法语三个版本,但生意做到二十个国家。正确做法是给三个版本各自声明,然后用默认项承接其余市场,而不是把二十个国家逐个指向最接近的那个版本。
## 只有一个版本时,别做的三件事
单版本站最容易犯的错,是觉得“别人都在做,我也得做点什么”,于是做出一堆帮倒忙的配置。
从零规划时就把这些想清楚,六个决策加十二周路线图 (https://zhangwenbao.com/overseas-indie-site-planning-6-decisions-12week-roadmap.html)。
无谓的层级同样有害,架构搭错了爬虫根本找不到你的产品页 (https://zhangwenbao.com/ecommerce-website-architecture-flat-vs-deep-crawl-depth-seo.html)。
别给同一个页面写一堆地区声明。只有一个英语页面,却给英美加澳各写一条指向它,看起来是覆盖了四个市场,实际上是在说“这四个市场各有一个专属版本”,而它们是同一个。这属于典型的无中生有。
别按访问来源自动跳转。没有别的版本可跳,跳来跳去只会制造重定向链,还会让抓取方看到不确定的结果。
别为了看起来国际化而加语言切换器。切换器背后如果没有真的版本,点开是同一页,用户会觉得被耍了,而这个入口还会占掉导航里一个宝贵的位置。
单版本站真正该做的只有一件事:把顶部那个语言属性写对。就这一件,成本接近零,收益是所有读取方都能正确理解你的内容。
## 默认项到底该指哪
默认项应该指向那个不针对任何特定市场的通用版本,通常是你的主语言版本,或者一个语言选择页。
兜底机制出错的另一种形态,自动字幕把品牌名听成了另一个词 (https://zhangwenbao.com/minor-language-auto-caption-asr-error-rate.html)。
兜底页面这件事有个更极端的情形,用户撞上404那一刻本地化就管不到了 (https://zhangwenbao.com/minor-language-error-page-fallback-language.html)。
本次数据里,66个站用了默认项。没细查每个指向哪里,但从抽样看,多数指向的是英语版本或者根域名,这个做法是对的。
要避免的是把默认项指向某个具体国家的站点,比如指向美国站。这在技术上不报错,但语义上是自相矛盾的:你说这是给所有没被覆盖到的人看的通用版本,同时它又是美国专属版本。
## 一个可以立刻做的自查
不用工具,打开你的首页源码,数两个数:hreflang声明有几条,这些声明指向的不同地址有几个。
最土的自查工具仍然管用,site命令的使用场景与误判 (https://zhangwenbao.com/site-command-seo-guide.html)。
想一次查完更多项,可索引性一键体检 (https://zhangwenbao.com/indexability-checker-noindex-canonical-redirect-diagnosis-guide.html)能把挡在索引外的原因列清。
如果第一个数远大于第二个数,比如超过三倍,那就值得回去问一句:多出来的那些声明,对应的版本真的存在吗?
这个自查一分钟就能做完,而它问的其实是本文从头到尾的那个问题——你写下的这一栏,背后有没有一个真的东西。
## 几个常被问到的边界情况
整理这一层时,有几个情况总会被问到,一并说清楚。
服务器放哪也会影响这一层,国内主机还是国外主机 (https://zhangwenbao.com/china-vs-overseas-hosting-for-cross-border-independent-site.html)要算备案、速度与合规。
价格按市场变化这件事本身也有讲究,把多市场价格排得像本地店 (https://zhangwenbao.com/currency-formatter-cross-border-price-localization-schema-guide.html)。
货币不同算不算不同版本?算。同样是英语,一个页面标英镑一个标美元,那就是两个针对不同市场的版本,声明成英国和美国两条是对的。这类是最典型的正当重复。
只是价格不同、其余完全一样呢?还是算。判断标准不是内容差异有多大,而是这两个页面是不是各自服务一个特定市场。价格、税费、物流时效、可售商品范围,任何一项按市场变化,都构成一个真实版本。
子域名和子目录的选择影响这一层吗?不影响声明的写法,但影响维护成本。多语言用子目录的站,声明通常更容易保持同步,因为它们在同一套模板里;用不同域名的站更容易出现某个站改版之后声明没跟着改的情况。
移动端和桌面端要不要分别声明?不要。这个标签处理的是语言和地区的对应关系,不处理设备。两者混在一起写会让声明变得更难维护,而且没有任何收益。
## 最后回到那个236比6
写到这里,再看那个写了236条声明、背后只有6个页面的站,感受和刚看到数据时不太一样了。
最难的从来不是标签,国际化SEO实操对不上的五大根因 (https://zhangwenbao.com/multilingual-entity-seo-cross-lingual-reconciliation.html)。
覆盖广不等于做得深,红海类目怎么靠微创新和人群细分突围 (https://zhangwenbao.com/dtc-red-ocean-niche-product-differentiation-positioning-bundling.html)是同一个道理。
它不是在作弊,也不是不懂。它做的事情很朴素:把生意做到的每一个地方,都在页面上说了一遍。这个动作背后的想法完全可以理解——多说一句总不吃亏,万一有用呢。
问题在于,这个标签的语义不是“我在哪些地方做生意”,而是“我的哪个页面对应哪个市场”。用一个表示对应关系的东西去表达覆盖范围,说得越多,对应关系就越模糊。
而模糊的对应关系,在一个越来越倾向于自己观察的系统面前,价值只会越来越低。广告那边已经给出答案了:当你说的和它看到的不一致时,它不会问你,它会改成自己看。网站这边的答案迟早也是同一个。
## 把这套方法搬去检查别的声明
本文用的量法其实很通用,核心只有一句:数一遍你声明了多少,再数一遍背后真实存在多少,两个数一比。
这个方法可以直接搬去检查别的东西。站点地图里列了多少个地址,其中多少个真能打开、真被收录;导航里挂了多少个入口,多少个背后有实质内容;结构化数据里声明了多少个属性,多少个填的是真值而不是占位符。
每一次这么数,得到的都是同一种信息:你对外宣称的规模,和你实际拥有的规模,差多少。而这个差值恰恰是系统评估你时最在意的东西之一——它衡量的不是能力,是可信度。
做这类检查有个心理障碍要跨过去:结果往往难看。第一次数完通常会发现自己声明的东西有一大半是空的。但这个难看是好事,因为它是可以靠删除来改善的,而删除是所有优化手段里成本最低的一种。
## 最后一句
9月那个变更值得所有做多语言的人认真读一遍,不是因为它影响多大——对多数账户影响有限——而是因为它把一件平时不明说的事说破了:平台问你,是因为它还不知道;等它知道了,就不问了。
你填在各种表单和标签里的那些值,都处在这条时间线的某个位置上。有的已经没人看了,有的正在被验证,有的还必须靠你。分得清自己在哪一段,才知道力气该往哪儿使。
## 常见问题解答
## Google Ads删掉语言定位,我需要重建广告系列吗?
不需要。官方明确说现有广告系列不用动,按语言拆分的账户结构可以原样保留。要做的是三件监控上的事:留意变更后搜索词的语言构成、地理流量分布的变化,以及确认广告素材的语言和落地页的语言是一致的。因为判断依据从你填的那个值换成了这两样可被直接读取的东西。
## 页面顶部那个语言属性和hreflang是一回事吗?
不是。前者说明当前这一页是什么语言,主要给浏览器、辅助阅读工具和内容解析用;后者说明这一页和其他版本之间的对应关系,主要给搜索引擎用。实测数据里两者的填写情况差别很大:前者97.8% 的站填了且几乎不出错,后者只有53.7% 的站做了,而且写法混乱得多。
## 把两百多个国家都声明一遍,会不会有好处?
不会,反而有害。实测的73个站里有53个存在多条声明指向同一个地址的情况,最极端的一家写了236条声明,背后只有6个不同地址。当一份对应关系表里几十个键映射到同一个值时,它提供的信息量很低,系统会整体调低这份声明的可信度,转而依赖它自己能观察到的东西。
## 用英语版本覆盖德国、日本这些非英语市场,算不算错?
做法本身完全正当,很多市场的英语普及率足够高。数据显示所有英语声明里有79.6% 指向非英语母语地区,说明这是普遍做法。要注意的是这份声明表达的东西和标签名字对不上:你想说的是那个国家的用户看这一页,标签的语义却是给讲英语的那国人看的版本。多数时候结果一样,需要系统做判断时会分岔。
## 语言码写错了,会有提示吗?
不会。页面照常打开,抓取照常进行,后台不亮灯,也没有通知。唯一后果是这条声明被静默忽略,而被忽略和生效了但没效果从外部看完全一样。实测发现有站把韩国的国家码当成韩语的语言码写,也有写成日本国家码加日本国家码这种不存在的组合。建议把码的合法性校验做进发布流程,别指望事后审计。
## 只有一个语言版本的站需要做hreflang吗?
如果只有一个版本、一个域名,不需要,没有对应关系可声明。如果同一个语言分了多个地区站点,比如英国站和美国站价格物流不同,那需要声明,这正是标准用法。如果做了几个语言版本但生意覆盖更多国家,正确做法是给各版本分别声明,其余市场交给默认项承接。
## 默认项应该指向哪个页面?
指向那个不针对任何特定市场的通用版本,通常是主语言版本或者一个语言选择页。要避免指向某个具体国家的站点,比如指向美国站,这在技术上不报错但语义自相矛盾:既说它是给所有未覆盖用户看的通用版本,又说它是美国专属版本。实测73个有声明的站里有66个用了默认项。
## 权威参考资料
## hreflang里写的那些语言版本,Google只把它们当规范页的别名
- URL:https://zhangwenbao.com/hreflang-alternate-url-alias-not-indexed.html
- 分类:国际SEO
- 发布:2026-08-12 | 更新:2026-08-12
- 摘要:多语言站在Search Console里一片未编入索引,德语用户却照样搜得到那个版本。这两件事能同时成立,因为hreflang指向的地址本来就不是独立的索引条目。
- 关键词:hreflang,索引诊断,国际SEO,独立站建站
> **TLDR**:摘要:把211个国际化独立站的首页拉了一遍,只有75个真写了hreflang,一共2592行标注,中位数16行,最长的一张260行。从这些表里挑出306个备用网址逐个抓:49个一请求就跳走,13个的规范网址指向别处,还有23个声明的语言跟页面实际给的对不上。而Google那边早就说过,这些备用网址并没有被真正编入索引,它们只是规范网址的别名。
>
摘要:把211个国际化独立站的首页拉了一遍,只有75个真写了hreflang,一共2592行标注,中位数16行,最长的一张260行。从这些表里挑出306个备用网址逐个抓:49个一请求就跳走,13个的规范网址指向别处,还有23个声明的语言跟页面实际给的对不上。而Google那边早就说过,这些备用网址并没有被真正编入索引,它们只是规范网址的别名。
这件事的起点是一条很多人问过的问题:站点做了多语言,Search Console里那些带语言前缀的网址一片“未编入索引”,可用德语搜的时候,德语版又确确实实出现在结果里了。报表说没有,眼睛说有,到底信谁。
2026年8月,Google的Gary Illyes在领英上回答了这个问题,用词很直接:hreflang的备用网址并没有在真正意义上被编入索引,它们只是被存成了规范网址的别名。这一句话,把很多人查了几年的报表状态重新解释了一遍。
你在报表里查的那个网址,系统回答的往往不是它,而是它归属的那个规范页。它自己没有一份可以单独查看的“当前状态”,因为它压根不是一条独立的记录。
这篇文章分两部分。前半段把机制讲透——别名到底是什么,它和索引条目差在哪一层。后半段是我自己动手量的一批数据:211个域名的hreflang表,306个备用网址的实际返回,以及一次让我把结论推翻重做的测量失误。
## 为什么Search Console说没收录,用户还是看到了那个语言版本?
先把那段回答完整地摆出来,因为它比任何转述都清楚。有人问:如果Google自己挑了某一个语言目录当规范页、其余的在Search Console里显示未编入索引,那它凭什么还能把别的语言版本给用户看。
## 那段回答里最关键的两层意思
他说这里面有两件事在同时起作用。第一件事叫别名:当Google把一组重复网址规范化之后,被淘汰的那些网址可能会变成所谓的别名,在用户的查询配得上其中某个别名的时候,它们会被拿出来用。
这两层意思落到报表上是什么样,8种未编入索引状态的判定路径 (https://zhangwenbao.com/gsc-index-coverage-states-discovered-crawled-canonical-mechanism.html)里逐条拆过。
第二件事,hreflang的备用网址就会变成这种别名。原话是它们并没有在真正意义上被编入索引,但这个网址被映射到了那个已经被编入索引的规范页上。完整问答可以看这篇关于hreflang备用网址是别名的记录 (https://www.seroundtable.com/google-hreflang-urls-not-indexed-41838.html),原贴的提问和回答都在里面。
两层意思拆开看,第一层讲的是规范化的副产品,第二层讲的是hreflang恰好生产这种副产品。合起来的意思是:hreflang从来就不是一个收录机制,它是一个分发机制。
## 为什么site: 查询能查出一堆会跳转的网址
他举的例子特别好懂:拿一个短链域名做site: 查询,会看到一大堆其实是跳转的网址。那些网址没有被真正索引过,它们只是某个规范网址的别名。你能在结果里看到它,不等于系统给它建了一条记录。
这个命令的适用场景和常见误判,site命令怎么用 (https://zhangwenbao.com/site-command-seo-guide.html)单独讲过一次。
这个例子的价值在于,它把“能出现在结果里”和“被编入索引”这两件被长期混用的事,硬生生掰开了。短链域名是个极端场景,正因为极端才清楚:那个域名下几乎没有任何真实内容,却能查出成千上万条结果。
为什么偏偏拿短链举例?因为短链域名下的每一个地址天生就是别名——它存在的全部意义就是指向另一个地址。用一个纯别名的域名来解释别名,是最不容易产生歧义的选法。多语言站的情况没那么极端,但性质是一样的。
顺便说一句,这也解释了为什么site: 查询查出来的数字一直不准,不适合拿来汇报。它数的是能被匹配到的字符串,不是索引条目。这两个集合有重叠,但从来不相等,而且重叠度还随站点结构变化。
我以前带团队的时候立过一条规矩:任何一份报告里出现site: 的结果数,必须同时标注它是一个量级参考而不是收录数。一个数字只要被写进周报,三个月后就没人记得它当初是怎么来的了,只记得它是收录数。
## 未编入索引不等于进不了搜索结果
顺着这条线往回看,Search Console那个状态就不冤枉了。它报告的是“这个网址有没有作为一条独立记录被索引”,回答是没有。而用户搜到的,是那条规范记录带着一个合适的别名露了个面。
收录、排名、流量本来就是三件事,没流量先分清卡在哪 (https://zhangwenbao.com/indexed-ranked-traffic-three-layer-seo-diagnosis.html)。
两句话说的不是同一件事,所以它们可以同时为真。这跟GSC索引覆盖状态的判定逻辑是一脉相承的:状态描述的是记录,不是可见性。页面索引报告对各状态的定义 (https://support.google.com/webmasters/answer/7440203)里,“替代页面(有适当的规范标记)”这一条说的正是同一件事。
## 这件事为什么每隔一阵就要被重新问一遍
因为多语言站的运营节奏就是这样:改一版模板,跑一遍工具,看一眼报表,发现一片红,慌了,然后开始改hreflang。改完过两周,报表还是红的,于是再改一遍。
真要动手修的时候,页面不被Google收录的急救手册 (https://zhangwenbao.com/google-not-indexed-fix-playbook.html)按症状分诊更省事。
我见过一个卖户外装备的团队,为这块红色前后折腾了四个月。第一个月怀疑是标注写错,重写了模板;第二个月怀疑是站点地图没提交,把六个语言的地图重新生成了一遍;第三个月开始怀疑服务器,换了一次CDN节点。
问题是这块红本来就不会变绿。它不是一个待修复的错误,它是一个被正确执行的机制留下的痕迹。这四个月里唯一真正该做的事,是去确认那个规范页有没有被正常收录。
## 这跟“重复内容”是两回事,别混着治
还有一种更贵的误判:把这片红当成重复内容问题,于是开始给语言版本加noindex,或者干脆把某几个语言目录从站点地图里撤掉。
重复内容的成因分六类,同域跨域参数变体全排查 (https://zhangwenbao.com/content-duplicate-issue.html)里有一张对照表。
这个动作的后果是实打实的。别名不占抓取预算,也不影响那条规范记录;但你一旦给某个语言版本加了noindex,它连当别名的资格都没了,那个市场的用户在结果里再也换不到本地版本。本来只是报表难看,现在变成真的少了一个入口。
判断很简单:如果一个语言版本的内容是真实翻译过的、面向真实市场的,那它就该留在索引流程里,哪怕报表永远显示未编入索引。要清理的是那些指向同一份内容的多余标注,不是内容本身。
## 先说结论,省得后面绕
整篇的判据只有一句:这个网址有没有一份属于它自己的、可以单独查询的当前值。有,它是条目;没有,它是别名。多语言站里绝大多数带语言前缀的网址,属于后者。
条目本身也分层,页面被丢进Base还是Landfill (https://zhangwenbao.com/google-index-tiers-base-zeppelin-landfill.html)是另一个维度的问题。
后面所有的数字,都是在回答一个附带的问题:既然大部分注定是别名,那你现在这张表里,有多少行是连当别名的资格都不太够的。
## 别名与索引条目的差别,在于有没有一个可查的当前值
把这两个东西并排放,差别其实不抽象。
## 一条索引条目身上挂着什么
一条真正的索引条目,有自己的抓取时间、自己的内容快照、自己的一套信号,也有自己在报表里的一行。你去查它,系统能把这一行的内容念给你听。
抓取、索引、排名这三步的分工,搜索引擎怎么工作的 (https://zhangwenbao.com/how-search-engines-work-crawl-index-rank.html)讲得最基础。
更重要的是,它可以被单独优化。你改这一页的标题,改的就是这一条记录;你给这一页加内链,权重进的也是这一条记录。它是一个可以承接动作的对象。
## 一个别名身上挂着什么
别名身上几乎什么都没有。它是一个映射:这个字符串,指向那条记录。它不存内容,不存信号,也不存状态。你去查它,系统只能把它指向的那条记录念给你听,或者干脆告诉你这里没有记录。
Canonical URL的9大决策 (https://zhangwenbao.com/canonical-url-seo-guide.html)里,身份这件事是所有判断的起点。
所以对着别名做优化,是最典型的白干。你把某个语言版本的标题改了三遍,如果这个地址是别名,那三遍改的都是同一条记录的同一个字段,后面两遍覆盖了前面两遍。
你想知道的事 | 索引条目能回答 | 别名能回答 |
最后一次抓取是什么时候 | 能 | 不能 |
当前收录的是哪一版内容 | 能 | 只能回答规范页的 |
在报表里占几行 | 一行 | 零行,或者一行“未编入索引” |
能不能出现在结果页上 | 能 | 能 |
能不能被单独优化 | 能 | 不能,只能改它指向的那条 |
删掉它会怎样 | 少一条记录 | 少一个入口,记录还在 |
## 规范化把一组网址压成一个,剩下的去了哪
Google的重复网址合并文档写得很清楚:一组被判定为重复的网址会被合并成一个规范网址,其余的成为这一组里的成员。别名就是从这个成员集合里出来的。这份关于合并重复网址的说明 (https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)里把“重复网址集群”这个词用得很具体,值得对着自己的站读一遍。
Google自己怎么挑那个规范页,9大决策逻辑与排查实操 (https://zhangwenbao.com/google-canonical-url-selection-logic.html)列得很细。
所以hreflang并没有创造出新的索引条目,它只是往一个既有的合并关系上,补了一层“这个成员适合哪个语言地区”的说明。它是给已有的合并结果贴标签,不是阻止合并发生。
## 为什么很多人以为hreflang能阻止合并
因为传播里有一句被简化过头的话:hreflang可以避免多语言内容被判重复。这句话有一半是对的——它确实能避免你的德语版和英语版被当成需要择一的重复内容。
同一种英语卖到美英澳,怎么不自己跟自己打架 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html)是这个误解最常见的现场。
但它避免的是“择一”,不是“合并”。这一组网址照样是一个集群,只不过集群里的成员按语言地区各自有了用武之地。集群还是那个集群,实心节点还是那一个。
## 别名会在什么时候被拿出来用
用户的查询配得上它的时候。语言地区匹配是最常见的一种,站内检索式查询是另一种。除此之外它就一直躺着,不占报表,也不占抓取预算。
召回到重排的四个阶段,搜索引擎排名怎么决定 (https://zhangwenbao.com/search-ranking-pipeline-retrieval-rerank-architecture.html)里拆过。
这也解释了另一个常见困惑:为什么某些语言版本明明有排名,但在报表里查不到任何数据。因为数据记在了那条规范记录名下。
## 把这层关系画出来,只有一个节点是实的
一组五个语言版本的页面,在你的后台是五条内容,在你的站点地图里是五行网址,在Google那边可能只有一个实心节点加四个标签。
节点合并会影响权重怎么走,子域名还是子目录 (https://zhangwenbao.com/subdomain-vs-subdirectory-seo-link-equity-domain-authority-transfer-decision.html)那篇算过账。
你以为在管五个页面,实际上在管一个页面和四个说明。这个落差决定了后面所有的运维策略:页面数是你的成本,节点数才是你的资产。
这个落差还会影响一件很实际的事:内链怎么给。如果一组语言版本里只有一个实心节点,那你从别处指过去的链接,无论落在哪个语言版本上,最终都汇进同一条记录。这时候纠结“该链德语版还是英语版”意义不大。
反过来,如果这几个语言版本各自内容差异很大、各自有独立的canonical、也各自被正常收录,那它们就是几条独立记录,链给谁就是给谁。同样一个动作,在两种结构下的效果完全不同,而你没法从后台看出自己处在哪一种结构里。
唯一能看出来的办法,就是去查那几个地址的canonical,以及在Search Console里看它们各自有没有独立的表现数据。有,是条目;没有,是别名。这个判据我会在后面反复用到。
## 我抓了75个国际站的hreflang表,第一件事该数什么?
光讲机制没意思,得看真实的表长什么样。我从公开可访问的国际化独立站、DTC品牌站和几个大型电商站里凑了211个域名,逐个抓首页,把head里的hreflang全部拆出来。
## 怎么抓的,先说清楚
每个域名发一次普通浏览器请求,跟随跳转,允许压缩,超时25秒,只取首页。解析的时候只认 rel=alternate 且带 hreflang 属性的link标签,其余一律不算。没有登录,没有cookie,就是一个陌生人打开首页会看到的样子。
换个角度从日志那一侧看爬虫,AI爬虫到底有没有抓你的站 (https://zhangwenbao.com/seo-log-file-analysis-guide.html)也是一手挖法。
样本覆盖服饰、床品、家居、户外、宠物、个护、3C配件、厨具、母婴、自行车几个品类,以欧美和北欧品牌自营站为主,另外放了几个平台型站点做对照。
选样本的时候我刻意加了一批中国出海品牌的独立站,因为这批站的多语言做法跟欧美品牌很不一样:它们通常一上来就铺十几个语言,速度快,覆盖广,但内容深度参差不齐。后面几个最典型的错配案例,确实出在这一批里。
有一点要先说明:这不是一个随机抽样,是一个便利样本。它能说明“这类站里常见什么问题”,不能推广到“全互联网有百分之多少的站有这个问题”。凡是拿便利样本算出来的比例,都只在这个样本内部成立。后面所有百分数请照这个口径读。
## 211个域名下来,真写了hreflang的只有75个
189个域名拿到了响应,170个的HTML能正常解析,其中 75个站的首页上有hreflang标注。剩下的近百个站,要么是单一市场单一语言,要么把多语言做成了完全独立的域名而没有互相声明。
基础写法和常见坑,多语言站的避坑清单 (https://zhangwenbao.com/international-seo-hreflang-complete-guide.html)可以先过一遍。
顺带一提,有14个站返回的是人机验证页而不是真页面,占抓取成功数的8.3%。这个数字本身不影响结论,但它提醒一件事:任何一次批量抓取,先数清楚有多少份样本是假的,再开始算比例。
## 那95个没写hreflang的站,在做什么
这一半样本我本来是要丢掉的,后来发现它们比写了的那一半更有代表性。翻了一遍之后,大致分成三类。
国际化最难的其实不是标注,实操对不上的5大根因 (https://zhangwenbao.com/multilingual-entity-seo-cross-lingual-reconciliation.html)说的是另一层。
第一类是真的只做一个市场,页面语言单一,连语言切换器都没有。这类站占了大头,它们不写hreflang完全正确,写了反而是负担。
第二类有意思:站上有语言切换器,切过去内容也确实变了,但head里一行hreflang都没有。也就是说多语言是做给用户的,没做给引擎。这类站的各语言版本基本靠自然抓取碰运气,能不能被正确分发全看内容本身的信号。
第三类最麻烦:每个市场一个独立域名,域名之间互不声明。从引擎的角度看,这就是几个毫无关系的站在卖同样的东西,重复内容的风险是实打实的,而且各站之间攒的信任度完全无法互相带动。
## 2592行标注,中位数是16行
75个站合计2592行hreflang。按站算,最少的只有1行,四分之一的站在5行以内,中位数16行,四分之三的站在39行以内。
站点地图那一侧的规模问题,2400站踩过的坑 (https://zhangwenbao.com/xml-sitemap-complete-guide.html)里有类似分布。
16行是个挺舒服的数字:大约对应十来个市场加一个兜底。但平均数在这里没有意义,因为分布是严重右偏的——头部那几个站,一个人顶后面二十个。所以下面我一律报中位数和分位数,平均数只在特别说明的时候才用。
右偏到什么程度?前10个站贡献的行数,超过了后65个站的总和。这意味着任何一个关于hreflang的“平均水平”说法都是可疑的,因为平均值被十来个把表铺得极大的站拉着走。
这种分布形态在SEO数据里其实很常见:页面数、外链数、关键词覆盖,画出来都是这个样子。习惯了之后有个条件反射——凡是听到“平均每个站有多少多少”,先问一句中位数是多少。两个数差得越远,那个平均数越没用。
做多语言站的时候,这个分布形态其实是个有用的参照:如果你的表长度落在5到16之间,你处在这个样本的主流区间,说明规模跟维护能力大概是匹配的。如果你只有三五个人的团队,表却铺到了60行以上,那你多半已经在维护一批自己都不知道存在的声明了。
## 最长的那张表有260行
排在前面的几个站,表长得有点吓人:一个瑜伽服品牌260行,一个刀具与园艺品牌236行,一个饮料品牌202行,一个美妆品牌190行。家居巨头116行,护肤品牌112行,自行车品牌110行。
声明膨胀和索引膨胀是一回事的两面,大量没用的页面拖垮流量 (https://zhangwenbao.com/index-bloat-mechanism-sitewide-diagnosis-decision-matrix.html)讲的是后者。
260行是什么概念?意味着这个品牌声明自己有260个语言地区组合的入口。而它真正维护着独立内容的市场,大概率不到二十个。剩下那两百多行,是配置表里“其他地区回退到国际站”那一句话的展开式。
## 分档之后能看出两种完全不同的做法
每站hreflang行数 | 站数 | 这通常意味着什么 |
1到2行 | 5 | 只声明了自己,或者只有一个对照版本 |
3到5行 | 14 | 手工维护,几个核心市场 |
6到12行 | 13 | 手工维护的上限,开始吃力 |
13到30行 | 19 | 模板生成,按国家站列举 |
31到60行 | 14 | 模板生成,按语言乘地区展开 |
61行以上 | 10 | 全量展开,很少有人再看一眼 |
站点结构本身也分两种做法,搭错了爬虫根本找不到你的产品页 (https://zhangwenbao.com/ecommerce-website-architecture-flat-vs-deep-crawl-depth-seo.html)。
12行是一道明显的分水岭。12行以内的表,基本是人手写的,改起来有人知道在改什么;12行以上的,几乎都是模板按配置表循环出来的。而模板的问题在于,它不会因为某个市场今年关了就少输出一行。
## 表越长,出错的机会涨得比行数更快
因为hreflang的正确性不是逐行判定的,它是成对判定的:A声明B,B也得声明A。行数翻一倍,需要对上的关系是平方级往上走。手工维护到12行就吃力,不是巧合。
对称性怎么落地,return tags与x-default实操避坑 (https://zhangwenbao.com/hreflang-implementation-return-tags-x-default-canonical-mistakes.html)那篇是配套的。
这也是为什么行数超过30的站,几乎必然出现某种自相矛盾——不是因为负责的人不认真,是因为这个量级已经不是人眼能盯的了。它得靠一个每周自己跑的脚本,而不是一次季度复盘。
## 有4个站,没在表里声明自己
hreflang有一条基本要求:这张表必须包含指向页面自身的那一行。75个站里,71个的表里出现了自己所在的域名,另外4个没有,占5.3%。
生成器给的代码粘上去往往就是单向的,这一点栽过不少人 (https://zhangwenbao.com/hreflang-generator-sitemap-return-tag-bidirectional-guide.html)。
这4个站的表全是指向别的域名或子域的,唯独漏了自己。这种写法的后果是整组声明可能被忽略,因为引擎无法确认发起声明的这个页面属于哪一组。
换个角度想这件事就更清楚了:hreflang表本质上是在说“我们这一组有这么几个成员”。如果发起声明的人没把自己算进去,那这句话在逻辑上就是残缺的——你在描述一个你声称不属于的组。
为什么会漏?因为模板通常是这么写的:循环遍历“其他语言”的配置列表,逐行输出。而“其他”这个词天然把自己排除在外了。一个词的选择,决定了一整套标注成不成立。写这段模板的人当时觉得很自然,毕竟没人会觉得需要向自己声明自己。
## x-default的覆盖率是88%
75个站里66个写了x-default,占88%。这个数字比我预期的高,说明这条已经进了大部分模板的默认输出。至于写得对不对,后面单开一节说,因为“写了”和“写对了”在这一项上差得特别远。
兜底做不好就容易改用跳转,按IP自动跳转会让半数页面进不了索引 (https://zhangwenbao.com/international-seo-ip-redirect-geolocation-language-switcher-ux.html)。
## 一张表里出现重复网址,说明了什么?
拆完2592行之后,我做的第二件事是查这张表内部有没有自相矛盾。结果比预想的多。
## 18个站的表里,同一个网址出现了两次以上
75个站里有 18个站,也就是接近四分之一,hreflang表里存在同一个网址被两个或更多语言代码同时指向的情况。
电商站的重复成因有八类,诊断与canonical全清单 (https://zhangwenbao.com/ecommerce-duplicate-content-causes-diagnosis-canonical-strategy.html)可以对着排。
这不算硬错误——一个页面确实可以同时服务于en-SG和en-MY,官方也没禁止。但它是一个信号:你声明的版本数,比你实际拥有的内容份数要多。多出来的那些,注定只能当别名。
## 3个站给同一个语言代码配了不同网址
反过来的情况少得多,只有3个站:同一个语言代码在表里出现两次,指向两个不同的网址。这个才是真错误,因为它让“哪个是de-DE版”这件事没有唯一答案。
同一个位置冒出两套标注,怎么把它们归一 (https://zhangwenbao.com/cms-seo-plugin-theme-tag-conflict-duplicate-canonical-title-og-schema-cleanup.html)是同一类问题。
引擎遇到这种情况通常的处理是整组忽略,或者只取其一。无论哪种,你精心写的那张表在这个语言上白写了。
## 重复网址不是笔误,是模板生成的
18个站里,重复的模式高度一致:一个英文页面被挂在en、en-US、en-CA、en-AU、en-SG五个代码下面,或者一个国际站被挂在所有没有独立站点的地区下面。这是配置表里“回退到国际站”那一行的直接产物。
模板换一套基建就得重搭,sitemap与重定向这套得自己来 (https://zhangwenbao.com/headless-cms-seo-infrastructure-rebuild-sitemap-meta-canonical-redirect.html)。
我把其中一个站的表整理出来数了数:60行标注,去重之后只剩11个不同的网址。也就是说,平均每份内容顶着五个半的语言标签。这个比值我后面会叫它“虚实比”,它比行数本身有用得多。
## 站在引擎那一侧,这张表被读成什么
它读到的是:这五个标签,指向同一份内容。于是这份内容成为一条索引条目,五个标签成为它的别名。你在后台看到五个市场,它看到一份内容五个名字。
引擎读页面分几步,看懂才知道哪里丢内容 (https://zhangwenbao.com/dom-crawling-rendering-indexing-seo-optimization.html)。
## 一对多和多对一,后果完全不同
形态 | 本批出现 | 是不是错误 | 后果 |
多个语言代码指向同一网址 | 18个站 | 不是 | 版本数虚高,别名变多 |
同一语言代码指向多个网址 | 3个站 | 是 | 该语言的归属没有唯一解 |
声明了但对方不回指 | 需成对比对 | 是 | 这条声明整体被忽略 |
指向的地址会跳转 | 49条 | 算 | 自己把条目降成了指路牌 |
这两个标记能不能同时用,9种场景怎么判断 (https://zhangwenbao.com/noindex-canonical-duplicate-page-seo.html)。
## 虚实比这个数怎么用
拿hreflang行数除以去重后的网址数,得到的就是平均每份内容顶了几个标签。本批样本里这个数普遍在1.5到3之间,个别站超过5。
几家工具的数对不上时,三家对账方法 (https://zhangwenbao.com/seo-tool-data-reconciliation-ahrefs-semrush-gsc-discrepancy-framework.html)的思路也是先统一口径。
它不是越低越好,1也不现实。但当它超过4的时候,值得停下来想想:你真的需要向搜索引擎声明这么多个市场入口吗,还是只是因为配置表里刚好列了这么多个国家。
这个数好在它不需要任何工具。把页面源码里的hreflang复制出来,粘进表格软件,一列是代码一列是地址,对地址那一列做一次去重,两个行数一除就出来了。三分钟的事。
更有意思的是把它跟另一个数放一起看:你的多语言内容团队有几个人。我见过一个团队,两个人负责本地化,站上声明了34个语言地区版本。两个人维护34份内容是不可能的,所以那34行里必然有大量是同一份内容的化名——去重之后果然只剩7个地址。
这不是说他们做错了。7份内容覆盖34个市场入口,本身是个合理的策略。问题只在于,团队内部一直以为自己在管34个版本,排期、预算、复盘全按34算,而实际的工作量和风险都落在那7份上。
这个误差会一路传导下去。做内容排期时,34这个数会让人觉得盘子很大、必须再招人;做效果复盘时,34又会让平均每个版本的产出看起来低得可怜。两头都被同一个虚数带偏,而没有人怀疑过这个数本身。
把虚实比算出来之后,那次讨论的结论从“再招两个本地化”变成了“把那7份做深,另外挑两个市场做真正的独立内容”。同样的预算,方向完全不同。一个数字算错,改变的往往不是某个动作,是整件事的方向。
## 声明的语言和页面实际给出的语言,能对上吗?
这是本次最花时间、也最有意思的一部分。既然hreflang是在描述“这个网址是哪个语言版本”,那就把这句描述拿去跟事实对一遍。
## 我做了一次三方比对
从75个站的表里,按语言均匀采样,挑出306个备用网址逐个抓取,然后比三样东西:hreflang里声明的语言、页面html标签上的lang属性、以及正文实际用的语言。
技术审计要看哪几层,从AI爬虫到accessibility的42步 (https://zhangwenbao.com/technical-seo-audit-five-new-layers-ai-era.html)列过。
前两个是站长自己写的字符串,第三个是页面真正给出来的东西。三者本来应该完全一致。而只要有一处对不上,这条标注就在撒谎,区别只是谁在撒。
为什么要比三个而不是两个?因为只比声明和属性的话,两个都是人写的字符串,它们很容易一起错——同一个模板变量渲染出来的东西,错也是一起错。加上正文这个第三方,才有了一个不受模板影响的参照。
正文语言怎么判的,我在下一节会详细讲,因为这一步差点让整个结论作废。先说结果:判定分两条路,非拉丁文字按字符区间的占比直接判,拉丁文字用停用词法配合归一化和弃权线。能判就判,判不了就明说判不了,绝不硬蒙。
## 306个网址,288个拿到了正常页面
抓取结果 | 数量 | 占比 |
200正常返回 | 288 | 94.1% |
403拒绝 | 4 | 1.3% |
404不存在 | 4 | 1.3% |
429限流 | 1 | 0.3% |
503不可用 | 1 | 0.3% |
连接失败 | 8 | 2.6% |
状态码怎么影响SEO,301、302、404和410该怎么选 (https://zhangwenbao.com/http-status-codes-seo-atlas-redirect-410-decision.html)。
## 248个页面可以做三方比对,90.7% 三者一致
去掉正文语言判不出来的(小语种超出检测范围,或者页面文字太少),剩下248个可比对的页面里,225个三者一致,占90.7%;23个至少有一处对不上,占9.3%。
收录速度这类指标怎么量,3平台300站实测数据 (https://zhangwenbao.com/seo-kpi-guide.html)是另一组一手数字。
不一致的形态 | 数量 | 占比 | 谁写错了 |
hreflang声明错,属性和正文一致 | 13 | 5.2% | hreflang那一行 |
lang属性错,声明和正文一致 | 3 | 1.2% | 模板里的html标签 |
正文语言不对,两个标注一致 | 7 | 2.8% | 内容没上,或者回退了 |
三类的严重程度是递增的。声明错,影响的是这一条分发规则;属性错,影响的是浏览器和辅助技术的判断;正文不对,那是内容根本没做出来,标注只是在替一个不存在的版本占位。
三类的修法也完全不同,而且成本差着量级。声明错,改一行模板变量,当天能上;属性错,改一处模板输出,也是当天的事;正文不对,那要么排一次翻译,要么把这个市场从配置里撤掉,两个都是要走排期的决定。
所以排查的时候,最好把这三类分开报给不同的人。前两类给开发,一句话就能说清;第三类给内容负责人,附上具体是哪几个市场。把三类混在一张“hreflang有23个问题”的单子里发出去,最可能的结果是这张单子在群里躺三周没人认领。
## 那五行是最干净的一组反例
一个无人机品牌的hreflang表里,de-LI、fr-MC、en-ID、en-LT、en-GB五个代码分别指向五个地区路径。五个网址我全抓了,五个页面返回的都是简体中文的中国大陆版首页,一个字的差别都没有。
翻译内容在AI检索里为什么吃亏,多语言AI可见性怎么做 (https://zhangwenbao.com/multilingual-ai-visibility-geo-optimization.html)。
这不是抓取环境的问题——我从另一条完全不同的网络又抓了一次英国那个地址,拿到的还是中文版,导航是“航拍无人机”“手持摄影设备”,页脚明明白白写着中国大陆。这五行标注描述的那件事,从来没有发生过。
## 四个语言网址全给英文
一个手表品牌的表里,es、nl、de、fr四个代码指向四个语言路径。抓下来lang属性全是en,正文也全是英文。
翻译外包和原生再创作的差别,本地化生产线 (https://zhangwenbao.com/multilingual-content-localization-production-pipeline-vs-translation.html)说得很直白。
有意思的是从海外网络抓那个西班牙语地址,正文确实是西班牙语的,导航写着Mujer、Hombre、Niños。也就是说内容是有的,只是lang属性一直没跟着切。这属于上表里的第二类,是三类里最轻的一种,但它会让所有依赖lang属性做判断的下游工具全部读错。
## 芬兰语页面是英文的
一个北欧刀具品牌声明了fi,指向fi-fi路径,抓下来lang属性是en,正文也是英文。这一类最难被发现,因为页面本身完全正常,只有一个懂芬兰语的人打开它才会觉得不对。
本地化没做透,跨文化语义与查询语言切换 (https://zhangwenbao.com/multilingual-keyword-research-cross-cultural-localization-query-language.html)那一步就接不上。
这种情况通常有两个来源:一是这个市场的翻译还没做完,先用英文顶着;二是翻译做过,但某次发版之后回退了,没人发现。无论哪种,标注都在替一个不存在的芬兰语版本背书。
要发现它其实有个很省事的办法:不用懂那门语言,只要抓下来看看页面上出现频率最高的那几个词,跟你声明的语言对不对得上就行。芬兰语的页面上不该满屏都是the和and。这个检查花不了一分钟,却是本文所有排查手段里唯一能发现第三类问题的。
再说得直白些:前两类问题是标注写错了,看代码能查;第三类是内容没做出来,只能看内容。而多数团队的多语言巡检流程里,只有查代码这一环。
## 还有几个没那么显眼、但性质一样的
一个欧洲电商在四个国家站上都有同一个页面,声明分别是en-CH、en-DE、en-AT、en-NL,抓下来四个页面的内容完全一致,语言也一致。严格说这四行没写错,但它们描述的其实是同一份内容的四个入口。
多语言多货币叠在一起,hreflang、URL与价格Schema三层避坑 (https://zhangwenbao.com/woocommerce-multilingual-multicurrency-seo-hreflang-url-schema.html)。
一个北欧户外品牌声明了no-no,页面lang属性写的是nb,正文是丹麦语。这三个值两两不同,属于最少见的一类。挪威语的书面形式本来就有两套,nb和nn,写no是个偷懒但可接受的做法;正文是丹麦语就没法解释了,只能是内容回退。
还有一个韩国站,声明ko-kr,lang属性是en,正文确实是韩语。这一类的坏处在于,所有靠lang属性判断的东西——浏览器的翻译提示、屏幕阅读器的发音、部分内容管理系统的搜索索引——全都会走错路。标注写错这件事,受害者往往不在搜索引擎那一侧。
## 还有一行写的是一个字母
一个户外背包品牌的表里,有一行的hreflang值就是 x。不是x-default,就是一个字母x。这一行在2592行里是唯一的畸形值,但它在那儿放了很久了。
写错位置这类问题,robots.txt和meta robots别搞反 (https://zhangwenbao.com/robots-txt-and-meta-robots.html)也是常见现场。
我猜是某次手工编辑时把 -default 删掉了,或者模板变量取值取了半截。无论哪种,它说明了一件事:这张表没有任何人在校验,因为但凡跑一次校验,这一行是第一个会被报出来的。
这个站不是什么小作坊,是一个在欧洲户外圈子里相当有名的背包品牌,站做得很漂亮,产品页的结构化数据也写得很规矩。技术水平和维护习惯是两件事,前者决定你能做到多好,后者决定你能维持多久。
## 一个能自己发现自己的错误的表,长什么样
回到实操。这一节的所有问题——重复网址、缺自指、畸形代码、语言对不上——有一个共同的解法,就是让这张表在生成的时候就自带一次校验,而不是等人想起来去查。
这类断言该由谁来加,后端工程师SEO协作的7个动作点 (https://zhangwenbao.com/backend-engineer-seo-collaboration-7-actions-canonical-sitemap-redirect.html)有分工建议。
做法不复杂:模板输出hreflang的那段代码,加三个断言。第一,输出完之后检查有没有一行指向当前页面自己,没有就在日志里报一条;第二,检查有没有重复的语言代码;第三,检查每个代码是否匹配语言标记的格式。
这三条断言加起来不到二十行,跑在生成阶段,几乎不耗性能。它们不能保证内容是对的,但能保证这张表在结构上不自相矛盾——而本次样本里超过一半的问题,恰恰就是结构上的自相矛盾。
为什么要放在生成阶段而不是事后扫描?因为事后扫描面对的是成千上万个页面,你得先决定扫哪些、多久扫一次、报出来给谁;而生成阶段只面对一段模板代码,错了当场就知道。越靠近问题产生的地方,修它的成本越低。
顺便说一个反直觉的经验:这三条断言最好只写日志不报错,不要直接抛异常让页面渲染失败。多语言标注出错是个内容质量问题,不是可用性问题,为它挂掉一个正在卖货的页面完全不划算。让它安静地记一笔,等有人看日志的时候自然会看到。
## 为什么我第一次算出来的错配率是真实值的两倍多?
这一节讲的是我自己的错误,但它比上面任何一个数字都更值得记下来。
## 第一版检测器说22.3% 不一致
我第一次跑三方比对,得到的结论是283个页面里63个不一致,占22.3%。这个数字当时让我挺兴奋——五分之一的多语言标注是假的,这标题都能直接写了。
数据虚高不是新鲜事,GSC展示与点击对接一年 (https://zhangwenbao.com/gsc-impression-bug-inflated-data-fix.html)也是一次口径修正。
然后我去看具体案例,发现不对劲:一个家居巨头的丹麦语页面被判成了葡萄牙语,一个户外品牌的意大利语页面也被判成了葡萄牙语,一个服装品牌的美国站还是葡萄牙语。葡萄牙语出现的频率高得不合常理。
## 罪魁祸首是三个字母
我的正文语言检测器用的是停用词法:给每种语言配一组高频虚词,数哪组命中得多。葡萄牙语那一组里,我放了 com。
靠特征词判定的工具都有这个毛病,12项语言特征怎么拆 (https://zhangwenbao.com/ai-detector-12-signal-humanize-guide.html)。
在葡萄牙语里com是“和、带有”的意思,确实是高频虚词,放进词表没有任何问题。问题是在一份HTML里,com是每一个域名的结尾。页脚的友链、结构化数据里的地址、社交账号、CDN域名、图片源,一页下来轻松几十上百次。这一个词,把整张分数表压垮了。
更阴险的是它压得很均匀:所有站都有域名,所以所有站的葡萄牙语分数都被抬高了同一个量级。这让错误看起来不像错误,倒像一个稳定的规律。
## 修完之后掉到9.3%
修法有四步。第一,抓文本之前先把所有网址和域名模式清掉,用正则把 https:// 开头的串和形如 xxx.com 的串整体替换成空格。第二,从各语言词表里删掉跨语言撞车的词,com、pro、per、non这类全部拿掉。
工具自己划的及格线不算数,那个95%准确率是怎么来的 (https://zhangwenbao.com/ai-audit-tool-accuracy-rate-denominator.html)。
第三,分数按词表长度归一,不让词表长的语言天然占便宜。第四,要求第一名的分数至少是第二名的1.5倍,否则判为测不出。
改完之后,不一致率从22.3% 降到9.3%,虚高了2.4倍。同时测不出的样本从4个涨到39个——这是好事,一把诚实的尺子应该在没把握的时候说没把握。
## 修之前和修之后,差在哪几格
指标 | 第一版 | 修正后 | 差异 |
可比对样本 | 283 | 248 | 严格了,弃权样本增加 |
判为测不出 | 4 | 39 | 诚实度提高 |
三者一致 | 77.7% | 90.7% | +13个百分点 |
至少一处不一致 | 22.3% | 9.3% | 虚高2.4倍 |
被误判为葡萄牙语 | 十余个 | 0 | com被清掉之后归零 |
报表本身也有黑洞,1000行与阈值过滤怎么补全 (https://zhangwenbao.com/gsc-data-hidden-limits-1000-row-url-bucket-threshold-workaround-engineering.html)。
最能说明问题的是最后一行。第一版里那些被判成葡萄牙语的页面,横跨丹麦语、意大利语、爱沙尼亚语、塞尔维亚语、英语,彼此毫无关系,唯一的共同点是页面上有域名。
## 另一个更隐蔽的坑:不支持的语言去哪了
第一版还有一个我当时没意识到的问题:我的词表只覆盖十几种语言,遇到爱沙尼亚语、塞尔维亚语、斯洛伐克语这类没配词表的,检测器不会说“我不认识”,它会挑一个分数最高的返回。
模型铺到七十多种语言那天,受益最多的不是最像英语的那几门 (https://zhangwenbao.com/multilingual-bert-seventy-languages-minor-language-seo-watershed.html)。
于是这些页面全部被判成了某种它认识的语言,然后跟声明对不上,进了“不一致”那一栏。一个检测器不会因为遇到超纲题就交白卷,它会蒙一个答案,而蒙的答案照样进你的统计。
修正的办法就是加一道弃权线:不够自信就返回“测不出”,把这些样本从分母里拿掉,而不是让它们污染分子。这就是为什么修正后可比对样本从283掉到248——少掉的那35个,本来就不该被算进去。
## 为什么这个错误能撑过第一轮检查
说来惭愧,第一版跑完我是做过检查的。我看了整体分布,看了各语言的样本量,看了不一致的三类占比,都挺合理——13.4% 声明错、5.7% 属性错、3.2% 正文错,三类递减,符合直觉。
坏就坏在“符合直觉”这四个字。一个被污染的结果,只要污染是均匀的,它的形状就不会变,变的只有幅度。而我们检查数据的时候,绝大多数时候是在看形状,不是在看幅度。
形状对了,人就放松了。这也是为什么我一直建议在任何统计结论旁边留几条原始样本:形状能骗过人,具体的一行骗不过。我那十几个被判成葡萄牙语的丹麦语页面,只要看一眼域名和内容就知道离谱,但它们在汇总表里只是某个百分比里的一小部分。
还有一层:因为污染是均匀的,各语言的相对排序甚至都没变——真正是德语的页面,德语分数依然高于法语,只是都低于被虚抬的葡萄牙语。一个只看排序不看绝对值的检查,完全发现不了这个问题。
所以真正有效的那一步,是我把每一类不一致的样本按站点分组,看到某个类别里反复出现同一个语言。同一个答案在毫不相干的样本上反复出现,这是污染最可靠的指纹,比任何统计检验都直观。
## 这类尺子失效有个共同特征
它们几乎总是让问题看起来更严重,而不是更轻。原因也不难理解:噪声是随机撒进各个类别的,而“一致”只有一种情况,“不一致”有很多种,噪声天然往不一致那一侧倒。
收录数据到底信谁,6场景选型与三源校准 (https://zhangwenbao.com/site-search-operator-vs-gsc-coverage-accuracy-decision.html)也是先校尺子。
所以当一次批量测量得出的问题率明显高于常识时,先怀疑尺子,再怀疑世界。我这次要是没去翻具体案例,直接把22.3% 写出来,读到的人会拿着一个虚高一倍多的数字去做决策。
## 怎么给自己的检测器留一道自检
最省事的一条:把你不打算支持的类别显式排除,而不是让它们落到某个默认桶里。我那39个测不出,之前全被塞进了某个语言。
真假Googlebot怎么验,120种UA分类与验证方法 (https://zhangwenbao.com/crawler-identifier-user-agent-bot-verification-guide.html)是个现成例子。
第二条:给每次判定留一个置信度,低于阈值就弃权,宁可少报也别错报。第三条也是最有效的一条——手工看20个样本,比看20页统计报表管用。我这次就是靠肉眼看出葡萄牙语出现得太频繁。
还有第四条,成本最低但最容易被忽略:给你的检测器喂几个你知道答案的样本,看它答不答得对。我事后补了这一步,拿五个我确定语言的页面去跑,第一版检测器错了两个。这一步花五分钟,能省掉后面几小时的白干。
说到底,任何一次批量测量都是在用一把自制的尺子量世界。尺子准不准,世界不会告诉你,只能自己找几个已知长度的东西先量一遍。这个道理在做SEO数据分析时格外重要,因为我们量的东西大多没有权威答案,错了也不会有人报错。
## 同一个网址从不同国家抓,会是同一个页面吗?
这个问题是被上一节逼出来的。既然我的抓取源在国内,那些返回中文的页面,会不会只是因为对方按访问来源做了切换?
## 我从两条不同的网络各抓了一次
做法很简单:同一个网址,一条走国内的服务器,一条走海外的抓取通道,比对拿到的内容语言。挑的是所有声明与实际对不上的样本里最典型的几个。
海外用户打不开怎么排,从DNS、线路到CDN (https://zhangwenbao.com/overseas-store-unreachable-slow-network-layer-diagnosis-dns-routing-cdn.html)是同一套思路。
这一步不做的话,前面那13个“声明错了”的结论就是站不住的,因为完全可能是我这一侧的问题。
## 无人机那五个地址,两边都给中文
英国那个地址两边返回的都是简体中文的中国大陆版。这属于网址本身的行为,跟谁来访问无关。那五行hreflang是彻头彻尾的空头支票。
中文站为什么在又不在,Preferred Sources扩到16种语言 (https://zhangwenbao.com/preferred-sources-global-rollout-16-languages.html)那篇也是一次实测。
## 瑜伽服品牌的新西兰地址,两边给的不一样
同一个地址,从国内抓,lang属性是zh-cn;从海外抓,页面是英文的,导航是Women、Men、Accessories、Shoes。这属于服务端按访问来源换内容。
按端跳转和按地域跳转一个道理,自动跳转的SEO最佳实践 (https://zhangwenbao.com/js-judges-mobile-automatically-jumps-to-mobile.html)。
两个例子放在一起才有意思:它们在我的第一版表格里长得一模一样,都是“声明en实际给zh”,但成因完全不同,处理方式也完全不同。前者要改的是那五行标注,后者要改的是整套地域路由策略。
## 一个网址的语言,未必是它自己的属性
这两个例子放在一起,结论就很清楚了:对相当一部分国际站来说,“这个网址是哪个语言版本”不是网址的属性,而是“网址加访问来源”这一对的属性。
Vary这个头就是为这种情况准备的,响应头的SEO机制 (https://zhangwenbao.com/http-response-headers-seo-x-robots-cache-vary-canonical-mechanism.html)讲过。
而hreflang是写在网址上的。你用一个只能描述网址的机制,去描述一件由网址和来源共同决定的事,中间那部分信息,无处安放。
## Googlebot从哪抓,你控制不了
Google的抓取绝大部分来自美国,也会做地区感知抓取,但你没法指定。所以按访问来源切内容的站,等于把“Googlebot看到哪一版”交给了运气。
抓取端换一套规则会发生什么,移动优先索引与桌面掉量自救 (https://zhangwenbao.com/mobile-first-indexing-mechanism-googlebot-rendering-evolution-survival.html)。
更麻烦的是这个运气不是一次性的:今天抓到英文版,下个月可能抓到别的。而hreflang表描述的是一个静态映射,它不可能跟着变。
## 怎么在自己站上验一次
不用搭什么环境。找一个你能用的境外网络出口,哪怕是手机开个国际漫游,或者让海外的同事帮忙打开一次,然后对同一个地址做三件事的比对:页面标题、货币符号、html标签上的lang属性。
CDN那一层会不会替你换内容,6层缓存与边缘路由 (https://zhangwenbao.com/cdn-cache-configuration-seo-impact-edge-routing-complete-guide.html)得先搞清楚。
三样里只要有一样不同,你的站就是按访问来源在切内容。这件事一定要在做hreflang之前搞清楚,因为它决定了你整套标注是不是建立在一个成立的前提上。
更省事的一招是看响应头:如果响应里带着 Vary 且值里有跟地域相关的字段,或者有CDN加的地理标识头,基本可以确定内容是分地域的。这一步用一次请求就能完成,不需要任何工具。
## 这对hreflang意味着什么
意味着一个不能稳定返回同一份内容的网址,本来就没资格当独立的索引条目。它被降成别名,与其说是引擎的判决,不如说是这个网址自己的性质决定的。
在边缘改SEO的做法,边缘SEO的原理与落地形态 (https://zhangwenbao.com/edge-seo-cdn-worker-no-deploy-implementation.html)。
反过来说,如果你希望某个语言版本真的成为一条独立记录,那它至少要做到一件事:不管谁来请求,它都返回同一份内容。这是入场券,不是加分项。
这条要求听起来简单,落地时会撞上一堆现实:价格要按当地货币显示,库存要按当地仓算,运费和税要按当地规则算,甚至某些商品在某些市场根本不能卖。这些都是合理的差异化需求。
可行的做法是把“地址决定的部分”和“来源决定的部分”分开。语言、文案、商品清单这些跟着地址走,货币显示、可售性提示这些跟着来源走,但不要让来源改变页面的语言和主体内容。前者是内容,后者是呈现,混在一起是所有地域化问题的根源。
## 那些一请求就跳走的备用网址还算数吗?
306次抓取里,有一个数字我一开始没打算量,后来发现它比错配率更能说明问题。
## 49个网址在抓取过程中发生了跳转
占全部306个的 16%。也就是说,每六条hreflang标注里,就有一条指向的地址不是最终地址。
改版之后的404和重定向链,死链检测一次揪出来 (https://zhangwenbao.com/deadlink-checker-404-redirect-link-health-guide.html)。
这个数字比9.3% 的语言错配率高出不少,而且它完全不依赖任何语言检测——状态码和跳转次数是curl直接给的,没有解释空间。如果只能量一个指标,就量这个。
## 跳转终点往往是另一个语言版本
常见的几种:从裸域跳到带语言前缀的路径,从旧的国家路径跳到新的,从http跳到https再跳到区域站。跳完之后落在哪,取决于对方的路由规则,跟你在hreflang里写的那个地址已经没什么关系了。
双向跳转配错很容易绕圈,Apache与Nginx双向实战 (https://zhangwenbao.com/301-url-redirection-http-jumps-to-https-and-https-jumps-to-http.html)。
最典型的一种是把hreflang指向裸域,然后裸域按IP分流。这一条标注在不同国家的爬虫眼里,指向的是完全不同的页面。
## 指向重定向,等于自己动手把它降成别名
Gary举的那个短链例子里,被site: 查出来的正是一堆会跳转的网址,它们的身份就是别名。你在hreflang里填一个会跳转的地址,做的是同一件事:亲手把一个本可以成为条目的地址,写成了一个指路牌。
多域名跳主域这套配置,完整配置实战 (https://zhangwenbao.com/nginx-open-ssl-www-and-http-all-jump-to-non-www-https-domain.html)可以直接抄。
## 跳转的三种形态,处理方式完全不同
把这49条跳转按终点归了个类,形态只有三种,但该做的事各不一样。
五类问题网址的占比和排查顺序,Google抓取报告怎么读 (https://zhangwenbao.com/google-crawling-issues-url-mistakes-diagnosis.html)。
第一种是补全型:从没有斜杠的路径跳到带斜杠的,从http跳到https,从裸域跳到www。这种跳转的终点是确定的,跟访问者是谁无关。处理方式最简单,把hreflang里的地址直接改成终点就行,改完这一条就从别名候选变回了条目候选。
第二种是路由型:从旧的国家路径跳到新的结构,比如从 /uk/ 跳到 /en-gb/。这说明站点改过一次目录结构,而hreflang没跟着改。要做的不只是改这一行,是把整张表和站点地图一起过一遍,因为大概率不止这一条落下了。
第三种最麻烦,是分流型:跳到哪取决于访问者的IP或者浏览器语言。这一种改地址没用,因为终点本来就不固定。要么把这条hreflang指向一个不做分流的确定地址,要么把分流本身改成提示而不是强制跳转。
怎么区分自己遇到的是哪一种?同一个地址请求两次,一次带上英语的语言偏好头,一次带上德语的,看终点变不变。变了就是第三种,不变再看跳转链的形状:只跳一次且是协议或斜杠层面的,是第一种;跳到一个完全不同的路径结构的,是第二种。
这三种的处理成本一个比一个高:第一种改一行配置,第二种改一次全站,第三种要改产品决策。所以排查时先按类型分好,别一上来就挨个改地址——改到第三种那几条时你会发现,改了也白改。
## 18个网址根本没拿到正常页面
4个403、4个404、1个429、1个503、8个连接失败,合计18个,占5.9%。这里面404那4个最要命——你在告诉搜索引擎“这个语言版本在这儿”,而那儿什么都没有。
死链怎么批量查,检测、分类到提交一条龙 (https://zhangwenbao.com/batch-detection-of-site-dead-links.html)。
403那4个也不能简单归为反爬。有两个我换了请求头重试仍然是403,说明那个路径对匿名访问就是关闭的。这样的地址写进hreflang,跟写一个404没有本质区别。
那8个连接失败的更值得说一句。它们不是超时,是域名解析不出来——也就是说,hreflang里写着一个已经不存在的域名。这种情况几乎只有一个成因:某个市场的独立域名到期没续,而所有还活着的页面上,指向它的那一行还在。
这类问题比404还麻烦一点。404至少说明域名还是你的,改回来很快;域名解析不出来,意味着这个域名可能已经被别人注册走了。等哪天有人拿它建了个站,你全站每个页面都在替一个陌生人做语言版本声明。
我知道这听起来有点耸人听闻,但过期域名被人接手做站这件事一直都有,圈子里买老域名做站甚至是一门生意。区别只在于,通常我们讨论的是你主动接手别人的域名,而这里是别人被动接手了你的,还顺带继承了你全站给出的一行推荐。
## 一条不能稳定返回200的标注,价值是零
不是价值低,是零。因为hreflang的作用是让引擎在合适的场景下把某个版本换上来,换上来的东西打不开,这个动作就不会发生。它甚至可能连累整组声明。
404被抓其实不全是坏事,软404修复指南 (https://zhangwenbao.com/google-404-crawl-seo-positive-signal.html)说得更细。
## 该怎么查
把你hreflang表里的每一个地址,用一次不带任何登录状态的普通请求跑一遍,只看两件事:最终状态码是不是200,跳转次数是不是0。这两项不过,别的都不用看了。
一次查清页面被什么挡在索引外,可索引性一键体检 (https://zhangwenbao.com/indexability-checker-noindex-canonical-redirect-diagnosis-guide.html)。
这个检查一次跑完,一张60行的表大概两分钟。它能筛掉的问题,比任何一个hreflang校验工具报的都要实在,因为那些工具多数只校验语法和对称性,不去实际请求。
请求的时候有两件事必须做对,不然结论会歪。第一,不要带任何cookie和登录态,因为登录态会改变很多站的地域判断;第二,把跳转次数单独记下来而不是只看最终状态码。一个跳了三次最后返回200的地址,在状态码那一栏是完美的,在跳转次数那一栏是不合格的。
我第一版脚本就只记了最终状态码,跑完一看94.1% 正常,差点就收工了。是后来顺手加了跳转次数这一列,才发现16% 这个数。很多时候不是数据不在,是你没给它留一列。
## 规范网址指向别处的那13条,暴露了什么?
抓下来的287个正常页面里,我顺手把每一页的canonical也记了。
## 271个自指,13个指向别处,3个没写
自指率95.4%,看着挺健康。但那13个指向别处的,值得一个一个看,因为它们全都是同一类问题的不同长相。而且这13个不是零散分布的,它们集中在5个站上,也就是说这是站级别的模板问题,不是某个页面的意外。
跨页场景下的冲突诊断,canonical标签到底怎么用 (https://zhangwenbao.com/canonical-tag-mechanism-cross-domain-self-conflict-diagnosis.html)。
## 四个国家站的同一个页面
一个欧洲时装平台在瑞士、德国、奥地利、荷兰四个国家站上都有一个同名的个人中心页,四个页面的canonical全部指向各自国家站的首页。
它是提示不是命令,8种误用别再犯 (https://zhangwenbao.com/canonical-tag-common-mistakes-hint-not-directive.html)。
hreflang说这是四个语言版本的同一个页面,canonical说这四个页面都不是独立页面。两套信号在描述同一批地址,结论互相打架。
## 五个语言版本的规范网址都指向同一个后缀
一个德国户外品牌的表里,de-de、de-ch、fr-be、en-us四个地址加上裸域,canonical全部指向对应路径下的 home.html。
URL结构的细节会一路影响到这里,影响抓取与排名的9个细节 (https://zhangwenbao.com/url-structure-slug-optimization-onpage-seo-mechanism.html)。
这一组倒是自洽的,只是它把“目录首页”和home.html当成了两个地址,然后再用canonical把它们合回去。绕了一圈,回到原点,中间白白多出一层跳转和一层合并。
## 欧洲站和英国站都指向主站
一个3C配件品牌的en-DE和en-GB分别指向欧洲子域和英国子域,两个页面的canonical都指向主站的www。这等于明说:这两个都不是独立页面,请只记主站那一个。
跨子域看数据时,网域还是网址前缀资源 (https://zhangwenbao.com/domain-property-vs-url-prefix-property-in-gsc-which-is-better.html)会影响你看到什么。
那这两行hreflang是干什么用的呢?它们让主站那条记录多了两个别名。仅此而已。如果这就是你想要的,那没问题;如果你以为自己在经营三个市场站点,那账就算错了。
## hreflang说是两页,canonical说是一页
这是最典型的信号打架。而这场架的结果没有悬念:canonical描述的是身份,hreflang描述的是关系,身份先于关系。被canonical判掉的地址,不会因为hreflang说它是德语版就重新获得独立身份。
它到底有没有生效,浏览器说它在body里 (https://zhangwenbao.com/head-boundary-canonical-parsed-into-body-seo.html)那次排查很典型。
## 三个页面完全没写canonical
数量不多,但这种情况下引擎只能自己挑一个当规范,挑中谁全看信号强弱:内链多的、站点地图里出现的、被外链指的,更容易胜出。而这三样恰恰是你能施加影响的地方。
不同页面类型该怎么配,5类页面的差异 (https://zhangwenbao.com/typecho-meta-robots-canonical-seo-rules.html)可以当模板。
## 为什么这13条几乎都出现在“功能页”上
把这13个地址的路径过一遍,有个共同点:个人中心、购物车、门店查询、帮助中心、目录首页,全是功能页,几乎没有一个是商品页或者内容页。
帮助中心这类页面的索引控制,工程化怎么做 (https://zhangwenbao.com/knowledge-base-help-center-seo-indexing-ai-citation.html)。
原因不难猜。功能页在各个市场之间是完全一样的,翻译一下就能用,所以它们最容易被模板批量生成出多个地区版本;同时它们又没有独立的内容价值,所以团队里通常没人给它们单独配canonical,模板给什么就是什么。
两个批量动作叠在一起,就产生了一批既被hreflang声明成多个版本、又被canonical判成同一个页面的地址。它们不会造成排名损失,但会让你的多语言报表里凭空多出一批永远修不好的行。
## 先对canonical,再对hreflang
顺序不能反。canonical没理顺就去调hreflang,等于在流沙上砌墙。实操上的顺序是:先确保每个语言版本的canonical自指,再让hreflang成对声明,最后才轮到x-default和地区细分。
告警怎么分级处理,三平台分级诊断与90天闭环 (https://zhangwenbao.com/webmaster-alert-triage-gsc-bing-baidu-three-platform.html)。
为什么这个顺序这么重要,可以用一个反例说明:有个团队花了三周把hreflang的对称性全部修好了,工具报告全绿,结果Search Console里的状态一动没动。后来才发现,那批页面的canonical全部指向英文主站——三周的活儿,改的全是一批别名之间的关系。
关系再正确,也改变不了身份。这就是为什么排查多语言问题时,我总是先要一份canonical的自指率,再看别的。这一个数不到95%,后面的活儿先别开工。
## x-default那一行到底在替谁兜底?
88% 的覆盖率背后,写法的差异挺大。
## 它不是“英文版”的意思
最常见的误解,是把x-default当成默认英文版。它的实际含义是:当用户的语言地区跟你声明的所有组合都不匹配时,把这一个给他。它是兜底,不是主选。
全球格局摆在这儿,多平台优化实战 (https://zhangwenbao.com/search-engine-landscape-seo-strategy-guide.html)比默认英文优先靠谱。
官方在本地化版本标注的指南 (https://developers.google.com/search/docs/specialty/international/localized-versions)里给的措辞是“当没有其他语言/地区更合适时”,这个“更合适”是相对的,不是绝对的英文优先。
## 语言选择页才是它的标准用法
官方文档给的典型场景,就是一个让用户自己挑国家和语言的页面。这类页面本身没有语言归属,正好承担兜底。
入口页怎么设计,10000个站的实测结论 (https://zhangwenbao.com/why-most-ecommerce-websites-dont-use-flat-urls.html)里有参照。
## 把x-default指向美国站,会发生什么
不会立刻出事,但你把一个没匹配上的用户,直接扔进了一个有明确地区归属的站。对巴西用户来说,他既不属于en-US,也没有pt-BR可选,落地页却是美国站的美元价格和美国仓的时效。转化数据会替你说话。
跨市场卖货还有一堆合规项,从商品条码到谷歌购物收录 (https://zhangwenbao.com/cross-border-product-gtin-guide.html)。
## 那个国家选择页刚好说明问题
本次样本里有一个欧洲美妆电商,hreflang声明en-US指向裸域,抓下来lang属性是cs,页面内容是一串国家名列表:Belgique、България、Česká republika、Danmark、Deutschland。
入口一多就容易爆炸,筛选器URL不爆炸的系统方案 (https://zhangwenbao.com/faceted-navigation-filter-url-seo-crawl-trap.html)。
这个页面的真实身份就是国家选择页,它该挂的是x-default,不是en-US。挂错之后,美国用户会被引导到一个让他重新选国家的页面——本来一步到位的事,硬生生变成了两步,而且第二步的跳出率一向不低。
## 没写x-default会怎样
不匹配的用户由引擎自行判断落在哪个版本。这不是灾难,只是把选择权交了出去。12% 的站选择了这条路,多数是因为模板里没有这一项,而不是深思熟虑的决定。
抓取预算怎么分配,2026年的12项实操 (https://zhangwenbao.com/google-crawl-frequency-optimization-guide-2026.html)。
交出去之后引擎多半会给用户一个语言上最接近的版本,或者干脆给那个信号最强的版本——通常是主站。对英语站来说这个结果还行,对主站是德语或日语的品牌来说,一个巴西用户可能就直接落进了一个他一个字都看不懂的页面。
## x-default写了但指向自己,算不算错
本次样本里有几个站,x-default指向的地址跟en-US那一行完全相同。这不算硬错误,引擎能读懂,但它把两件事合并成了一件:既宣称美国站是美国用户的版本,又宣称它是所有人的默认版本。
分页那一侧也有类似的自指问题,索引判断和canonical设置 (https://zhangwenbao.com/shopify-collection-pagination-seo-guide.html)。
什么时候这样写是合理的?当你的主站确实是一个不带地区色彩的国际站,只是碰巧用美元和英文的时候。什么时候不合理?当那个页面上写着“美国境内免运费”“仅配送至美国”这类话的时候。那一刻它就已经是国家站了,不该再兼任默认页。
## 一个判断你该不该写的简单办法
问自己一句:我有没有一个页面,是专门给“我不知道你是谁”的访客看的。有,就把x-default指向它;没有,那就先做一个,或者干脆别写,别把某个国家站硬拉来顶班。
什么该做什么不该做,可交接的生产规范 (https://zhangwenbao.com/content-brief-production-spec-engineering.html)比拍脑袋强。
做这样一个页面其实不难,难的是说服团队它值得做。因为在数据上它几乎不产生直接转化——它的全部作用就是把人送去该去的地方,送完自己就退场了。这类页面在任何一个以转化为导向的复盘里都是垫底的。
如果非要给它找一个能上报表的指标,我建议看它的跳出率和跳转完成率:进来的人里有多少真的点了某个国家进去了。这个数低于七成,说明这个页面本身设计有问题,比如国家太多没分组、没有按访客的浏览器语言把最可能的那个排在前面。
还有个小细节容易被忽略:这个页面上每个国家的链接,最好指向对应语言版本的首页,而不是统一指向某个中转地址再分流。用户在这一步已经明确告诉你他是谁了,再让他多跳一次纯属浪费。
但它的价值不在自己身上。一个好的语言选择页,救回来的是那些原本会落错版本、看到看不懂的文字然后直接关掉的人。这部分损失不会出现在任何一份报表里,因为他们从来没有进入过漏斗。
## 语言代码的形态分布里,藏着一整套没人复查的默认值
2592行标注,我按形态归了个类。
代码形态 | 行数 | 占比 | 例子 |
语言加地区 | 2396 | 92.4% | de-DE、en-GB、fr-CA |
只有语言 | 114 | 4.4% | de、fr、nl |
带文字系统 | 13 | 0.5% | zh-Hans、zh-Hant |
畸形值 | 1 | 0.04% | x |
另外66行x-default单独统计,不在上表内。
## 只写语言不写地区,什么时候更合适
当你确实只有一份该语言的内容、不区分市场的时候。写de比写de-DE更诚实,因为后者等于宣称你有德国专供的一版,而奥地利和瑞士用户会被推到别处去。
引擎对语言的理解一直在变,从关键词匹配到意图理解 (https://zhangwenbao.com/semantic-search-understanding-evolution-hummingbird-bert-mum.html)。
只占4.4% 说明大部分人没意识到这是个选项。模板默认输出语言加地区,于是所有人都在声明自己有国别版本,哪怕内容一模一样。
## 写了地区却没有对应内容,比不写更糟
这是本次数据里最普遍的浪费:把一份英文内容挂在en-US、en-GB、en-AU、en-CA、en-SG五个代码下。它不违规,但你要为此维护五倍的标注量,换来的是五个别名。
多语言跨模态那一套,MUM算法怎么影响SEO (https://zhangwenbao.com/google-mum-multitask-multilingual-multimodal-algorithm-mechanism.html)讲过。
成本还不只是标注量。每次你新开一个市场、关掉一个市场、换一个域名结构,这五行都要跟着改,而且要在所有页面上同步改对。
那什么时候这五行是真值钱的?当你打算未来给某个市场做差异化内容的时候。先把地址结构和标注铺好,等内容做出来直接填进去,比到时候再重排整套结构省事得多。这是一个合理的提前投入。
问题在于绝大多数人不是这么想的,他们只是照着平台给的市场列表全选了一遍。提前投入和顺手全选,在代码上长得一模一样,区别只在有没有人说得清为什么。能说清的,留着;说不清的,砍掉一半试试,不会有任何损失。
## 文字系统那一档为什么这么少
13行,全部集中在中文简繁上。这一档少,是因为大部分需要区分文字系统的市场,站长直接用地区代码糊弄过去了:用zh-CN代表简体、zh-TW代表繁体。
平台自带的实现是什么样,Magento 2的9个核心点 (https://zhangwenbao.com/magento-2-seo-9-core-points-layered-navigation-hreflang.html)是个参照。
能用,但遇到马来西亚、新加坡这种同语言不同书写习惯的市场就不够用了。W3C关于语言声明的问答 (https://www.w3.org/International/questions/qa-html-language-declarations)里对这一点有很清楚的说明:文字系统子标签只在真正需要区分的时候才写,写了就要写对。
## 地区代码写错的几种典型
本次样本里见到的:用UK而不是GB(这个其实会被容忍)、把语言和地区顺序写反、用了已经废弃的代码、以及给一个根本没有业务的地区凭空造一行。
域名这一层的选择也有标准,TLD与老域名收购的8步决策 (https://zhangwenbao.com/domain-name-decision-tld-emd-aged-acquisition.html)。
标准是BCP 47,语言标记的语法定义 (https://www.rfc-editor.org/rfc/rfc5646)写在RFC 5646里,语言用ISO 639,地区用ISO 3166-1的两位大写。这份文档不长,做国际站的人值得通读一次。
## 92.4% 都写成语言加地区,这个默认值合理吗
从数字上看,写语言加地区几乎成了行业默认。但默认不等于最优,它更多是工具链的产物:主流建站平台的多语言插件,配置项就是“语言”和“市场”两个下拉框,拼出来自然是这个形态。
变体那一侧的三层治理,Schema、canonical与URL (https://zhangwenbao.com/woocommerce-product-variations-seo-schema-canonical-url-deep-dive.html)是同一种思路。
什么时候这个默认值是对的?当同一门语言在不同市场确实有不同内容的时候——价格不同、库存不同、法律条款不同、甚至用词不同。英国人说trousers,美国人说pants,这就值得分。
什么时候它是浪费?当五个地区共用一份文案、一套价格、一个仓的时候。这时候你声明的不是五个版本,是同一个版本的五个化名。它们全部会成为别名,而你要为此维护五倍的标注。
## 那一行x是怎么留下来的
2592行里只有一个畸形值,比例低到可以忽略,但它值得单独说一句,因为它暴露的不是写错,是没人查。
工具本身也会坏,5步SOP与多源替代 (https://zhangwenbao.com/gsc-links-report-outage-2026-may-rollback-fix-monitoring-strategy.html)准备一手总没错。
任何一个hreflang校验工具,第一件事就是检查语言代码是否合法。x 不是合法的语言标记,也不是x-default,任何一次校验都会把它报出来。它还在那儿,只能说明这张表从生成那天起就没被校验过。
一个错误能存活多久,比这个错误本身严重多少更能说明问题。同样的道理适用于你自己的站:与其纠结某一行写得对不对,不如先确认这张表有没有一个定期跑的检查。
## 一份可以直接跑的自检清单
- 每一行的地址,普通请求返回200,跳转次数为0
- 每一行指向的页面,canonical自指
- 每一行的语言代码符合BCP 47,地区两位大写
- A声明B,B也声明A,包括声明自己那一行
- 同一个语言代码在表里只出现一次
- 整张表里至少有一行x-default,且它指向的页面没有地区归属
- 抽查三行,人工确认页面正文语言跟声明一致
- 行数除以去重网址数,也就是虚实比,控制在4以内
## 这套东西该怎么维护,才不会每半年重来一次?
讲了这么多问题,落到操作上其实只需要一样东西。
按性价比排的速赢清单,11个快速见效的动作 (https://zhangwenbao.com/seo-quick-wins-prioritized-checklist.html)可以并着做。
## 卡点是一张hreflang对账表
不是工具,是一张表。它要能回答一个问题:我声明了几个版本,我实际有几份内容,差额是多少。这个差额就是你的别名数量,也是你每次改模板要维护的额外负担。
这类定期任务用cron挂上去就行,备份、sitemap一条龙 (https://zhangwenbao.com/linux-cron-shell-independent-site-automation-ops-backup-sitemap-ssl.html)。
## 五列分别是什么
列 | 内容 | 为什么要它 |
语言地区代码 | hreflang里写的那个字符串 | 对账的主键 |
目标地址 | 这一行指向哪 | 查重复、查跳转 |
内容归属 | 这个地址背后是哪一份内容 | 算差额的关键一列 |
负责人 | 谁能改这一份内容 | 出问题时找得到人 |
上次核对 | 日期 | 决定下次什么时候看 |
往上汇报的时候,6步翻译成业务语言 (https://zhangwenbao.com/cmo-seo-report-business-outcome-six-step.html)更容易过。
## 第三列最容易被跳过,也最重要
因为前两列可以从页面上直接抓,第四第五列是管理信息,只有第三列既抓不到又不能省。而恰恰是这一列,把“我有60个语言版本”这句话打回原形:填完你会发现,60行标注背后可能只有11份内容。
预算会上怎么讲,用商业语言把这笔钱讲清楚 (https://zhangwenbao.com/seo-budget-planning-and-roi-model-for-leadership.html)。
填这一列的方法很土:把所有目标地址去重,然后人工确认哪些地址实际上指着同一份翻译。土归土,一个60行的站半小时能填完,而且填完之后一年不用重填。
有个加速的小技巧:不用逐个打开页面看,先按域名和路径前缀分组,同一组的大概率是同一份内容,抽查一个就能定性。真正需要逐个确认的,只有那些路径结构看不出规律的散户。
填完之后你会得到一个副产品,而且这个副产品往往比对账表本身更有用:一张“这几个市场共用一份内容”的清单。下次内容团队要改某个市场的文案时,这张清单能立刻告诉他这一改会影响哪几个市场——这个问题以前多半是靠某个老员工的记忆回答的。
## 多久跑一次
行数在12行以内的,改模板的时候顺手看一眼就够。超过30行的,建议每季度跑一次自动检查,只报三个数:跳转数、非200数、重复地址数。这三个数不变,就不用人去看。
批量监控收录可以用接口,2000条配额下的监控管线 (https://zhangwenbao.com/gsc-url-inspection-api-bulk-index-monitoring.html)。
## 这张表放在哪,谁来填
放在哪不重要,重要的是它跟那份“市场配置表”是同一份,而不是两份。多数团队的问题不是没有配置表,是有两份甚至三份:运营手上一份,开发手上一份,模板里还硬编码了一份。
报表自己搭也不难,用Claude Code做GSC自定义报表 (https://zhangwenbao.com/claude-code-gsc-custom-seo-reports.html)。
填的人应该是那个能回答“这个市场的文案是谁在维护”的人,通常在内容或本地化那边,不在技术那边。技术能填的是前两列,第三列必须由知道内容归属的人来填。
如果这三份表能合成一份,本文里绝大多数问题会自动消失。那4个404,那3个重复语言代码,那18个站的虚高声明,追到根上都是“配置表有好几份,改了这份忘了那份”。
## 什么数字出现才值得叫人
非200大于0,立刻处理;跳转数比上次多,去看是不是路由改了;重复地址数变化,说明配置表里有市场被增删。其余的波动都可以忽略。
阈值设太紧会误伤,怎么不误伤GoogleBot (https://zhangwenbao.com/nginx-ai-bot-blocking-rate-limit-rdns-misblock-account.html)那篇算过账。
这套阈值的设计原则是:只在有人改了东西的时候响,不在正常运行的时候响。一个一年响两三次的告警,才有人愿意看;一个每周都响的告警,三个月后就没人看了。
具体到实现,最简单的版本是一个每周跑一次的脚本:抓一次首页,把hreflang全部拆出来,逐个发请求,把三个数字追加到一个文本文件里。下次跑的时候跟上一行比,不一样就发个通知。二十来行代码的事,不需要任何平台。
关键在于比的是变化而不是绝对值。绝对值天天都有小波动——某个地区站临时维护、CDN某个节点抽风、某次抓取撞上限流。盯绝对值会被这些噪声淹没,盯变化只在真有人动了配置的时候才响。
## 一个30秒粗筛
打开任意一个语言版本的页面,看它的源码,做三件事:数一下hreflang有多少行;随便挑一行的地址在浏览器新标签里打开,看会不会跳;看这个页面的canonical是不是指向它自己。三样里有一样不对,这张表就该翻出来对一遍了。
要批量拿地址,6种格式解析与URL批量提取 (https://zhangwenbao.com/sitemap-extractor-url-extraction-format-analysis-guide.html)更快。
## 新开一个市场的时候,先做哪一步
顺序建议是这样:先把新市场的内容做出来并确认canonical自指,再把它加进站点地图,最后才动hreflang。很多团队反过来做——先在配置表里加一行,模板自动生成标注,内容还在翻译中。
反过来下架时怎么收尾,301、410与库存信号决策 (https://zhangwenbao.com/magento-2-out-of-stock-discontinued-product-seo-301-410-soft-404.html)。
反过来做的代价是有一段时间里,你的表里有一行指向一个半成品或者一个回退页。这段时间可能是两周,也可能因为项目延期变成半年。而那半年里,引擎每次读到这张表,都会记下一个不成立的映射。
## 关掉一个市场的时候,最容易漏的是什么
漏的通常不是那个市场自己的页面,是其他所有市场页面上指向它的那一行。因为关站这个动作往往由运营发起,执行的是把域名或目录下线,而hreflang是写在每一个还活着的页面上的。
域名不要了也别直接扔,6信号怎么保住信任继承 (https://zhangwenbao.com/expired-domain-reuse-redirect-seo-trust-transfer-mechanism.html)。
结果就是:那个市场没了,但剩下二十个市场的每一个页面上,都还留着一行指向它的声明。这一行现在指向一个404或者一个跳转。本次样本里那4个404,我怀疑有一半是这么来的。
## 换域名结构那次,最该提前做什么
多语言站迟早会遇到一次结构调整:从 /uk/ 换成 /en-gb/,从子域并回子目录,或者反过来。这种时候hreflang是最容易被落下的一块,因为它散落在每一个页面的头部,而不是集中在某个配置文件里。
提前该做的只有一件事:把hreflang的生成逻辑从模板里抽出来,让它读同一份市场配置。做到这一步,改结构就是改一份配置的事;做不到,就得在几十个模板文件里找那些硬编码的地址。
本次样本里第二种跳转——路由型——基本都是这一步没做到位的遗留。站点结构改完上线了,hreflang还指着旧路径,靠一层重定向硬撑着。撑得住,但每一条声明都多了一跳,而且这一跳还会在下次清理重定向规则的时候变成404。
顺带说个经验:结构调整上线之后,别只验主流程和商品页,专门挑三五个语言版本,把它们的hreflang整张表拉出来跑一次状态码。这一步花十分钟,能挡住后面半年的麻烦。
## 把预期调对,比修好它更省事
最后回到最开始那个问题。Search Console里那一片“未编入索引”,多数时候不需要修。你要做的是把hreflang表的行数降到跟内容份数接近,剩下的别名让它们安静地当别名。
那些数字为什么人人都读错,从配置到诊断的完整用法 (https://zhangwenbao.com/google-search-console-complete-guide-diagnosis.html)。
一个多语言站的健康程度,不看它声明了多少个版本,看它声明的版本数和内容份数之间的差额有多大。差额越小,你每次改动要同步的地方越少,出错的机会也越少。这个道理放在任何一套“描述关系”的标注上都成立。
写到这儿其实可以把这批数据串成一条线了。2592行标注背后,是75个站在向搜索引擎描述自己有多少个市场版本。这些描述里,16% 指向的地址会跳走,5.9% 拿不到正常页面,9.3% 说的语言跟给的语言对不上,4.6% 被自己的canonical判掉,5.3% 忘了声明自己。
这些数字彼此独立,加起来会重复计数,所以别去求和。但它们指向同一件事:这张表是被生成出来的,不是被维护出来的。生成不需要人,维护需要;生成一次就够,维护要跟着市场增删走。差别就在这儿。
所以真正的落脚点不是修某一行标注,是给这张表找一个主人。有主人的表,行数会往下走,虚实比会往1靠,那些畸形值活不过一个季度。没主人的表,会一直长,长到有一天没人敢动它,然后一个字母x在里面躺三年。
如果你现在手上正好有一个多语言站,今天能做的三件事按性价比排是这样:先花三分钟算一次虚实比,知道自己在什么位置;再花二十分钟把表里所有地址跑一遍状态码和跳转次数,把非200的挑出来;最后花半小时把内容归属那一列填了。
这三件事做完,你对自己站的多语言状况的了解,会超过绝大多数只看工具报告的人。因为工具报告回答的是“写得合不合规”,而这三件事回答的是“写的是不是真的”。后者才是所有麻烦的来源。
## 常见问题解答
## Search Console显示未编入索引,我需要提交收录吗?
不需要。如果这个网址是某个规范页的hreflang备用地址,它本来就不会作为独立条目被索引。反复提交不会改变结论,只会消耗你的配额。要确认的是那个规范页本身有没有被正常索引。
## 那我的德语页面到底能不能被搜到?
能。别名会在用户查询匹配的时候被拿出来用,语言地区匹配正是最典型的匹配场景。能不能被搜到,跟有没有独立索引条目,是两件事。
换个引擎也一样,百度提交了为什么还不收录 (https://zhangwenbao.com/baidu-index-crawl-mechanism-why-not-indexed.html)。
## hreflang写在head、HTTP头还是站点地图里有区别吗?
三种位置都受支持,效果上没有优劣之分,选一种坚持用就行。区别在维护成本:站点地图适合行数多的站,因为改一个文件就够了;head里写适合行数少、模板简单的站;HTTP头主要用于PDF这类没有head的资源。混着用是最糟的选择,因为你会失去唯一的事实来源。
写进站点地图的做法,动态优先级与sitemapindex分页 (https://zhangwenbao.com/wordpress-free-plug-in-automatically-updates-sitemap-xml.html)。
## 一个页面挂五个英语地区代码,会被判作弊吗?
不会。它不违规,只是浪费。真实成本是你要维护五倍的标注量,而且每次增删市场都要动这五行。如果内容确实不区分市场,写一个en更省事,也更诚实。
## canonical和hreflang冲突的时候听谁的?
听canonical。它决定的是这个地址有没有独立身份,hreflang描述的是有身份的那些地址之间的关系。被canonical判给别人的地址,不会因为hreflang而重新拿回身份。所以排查顺序永远是先canonical后hreflang。
## 按用户IP自动切换语言,会影响hreflang吗?
会,而且影响不小。自动切换意味着同一个地址在不同来源下返回不同内容,这跟hreflang“一个地址对应一个语言版本”的前提直接矛盾。更稳的做法是给用户提示和入口,让他自己选,而不是替他跳转。
环境串了同样麻烦,8步清除与四层防御 (https://zhangwenbao.com/staging-preproduction-environment-index-leak-prevention-recovery.html)。
## x-default应该指向哪个页面?
指向一个没有地区归属的页面,比如语言选择页。如果实在没有这样的页面,指向你的国际站或主站也行,但不要指向某个具体国家站——那等于告诉引擎,所有匹配不上的用户都是那个国家的人。
## 我的语言版本一直没被抓,是hreflang的问题吗?
大概率不是。hreflang不是抓取指令,它不会让引擎去抓一个原本不会抓的地址。一个语言版本长期没被抓,通常是因为它没有内链指过去、不在站点地图里、或者被robots规则挡住了。先查这三样,再回来看标注。
## Search Console里能单独看某个语言版本的数据吗?
能看,但要理解你看到的是什么。用网页过滤按路径筛,能看到那个语言目录下的表现数据;但如果该目录下的地址多数是别名,数据会记在规范页那一侧,筛出来的数字会明显偏低。这不是报表出错,是记账口径的问题。
## 用工具跑出来的hreflang报告说全绿,还需要自己查吗?
需要。市面上多数校验工具查的是语法和对称性:代码合不合法、A有没有回指B。这两项确实重要,但它们都不实际请求那个地址。本次数据里16% 的跳转和5.9% 的非200,在语法层面全是合法的。
工具报告怎么读,五维度100分审计 (https://zhangwenbao.com/geo-optimizer-5-category-100-point-audit-guide.html)也提醒别只看总分。
## 子域名和子目录做多语言,哪种更不容易出这些问题?
子目录明显更省心,因为所有语言版本共享同一个域名的信任度,也共享同一套模板和同一份站点地图逻辑,出错面小。子域名和独立域名的优势在于本地化程度和运营独立性,代价就是这套标注要跨域维护,本次样本里跳转和错配集中出现的,恰恰是跨域那几个站。
服务端这一层怎么统一治理,6层综合治理实战 (https://zhangwenbao.com/apache-htaccess-seo-6-layer-rewrite-cache-canonical-hsts.html)。
## hreflang里的地址必须是绝对路径吗?
必须。相对路径在这里不受支持,写了等于没写。同理,地址里的协议要跟你实际提供服务的协议一致,还在混用http和https的站要特别注意,一个协议不匹配就足以让这条声明失效。
## 我的站只有中英两个版本,值得折腾这一套吗?
值得,而且成本极低。两个版本只需要四行标注:中文版声明自己和英文版,英文版声明自己和中文版,再加一行x-default。全部工作量不超过半小时,之后基本不用再动。这套东西的维护成本是随版本数指数上升的,两个版本的时候几乎为零。
## 怎么快速判断我的多语言标注是虚的还是实的?
数两个数:hreflang行数,和你真正维护着独立文案的市场数。前者除以后者,商越接近1越健康。本次样本里这个商普遍在1.5到3之间,个别站超过5。超过4就说明你在为一堆别名付维护费。
## 权威参考资料
## hreflang生成器给的sitemap代码,粘上去就是一份单向标注
- URL:https://zhangwenbao.com/hreflang-generator-sitemap-return-tag-bidirectional-guide.html
- 分类:国际SEO
- 发布:2026-07-14 | 更新:2026-07-14
- 摘要:这篇把Hreflang多语言标签生成器的两份输出分开评估。它在浏览器本地把语言、地区、网址拼成HTML与Sitemap两种格式的标注代码,支持自动推算多语言网址。核心结论是这两份质量差得很远:HTML那份合格,包含每个语言版本各一行、指向自己的自引用、以及一行x-default,复制到每个语言版本页面头部即可。
- 关键词:hreflang,国际SEO,x-default,多语言站
> **TLDR**:摘要:这款生成器出的两份代码,质量差得有点远。HTML那一份是对的,标签集完整、带自引用、x-default也在,复制到每个语言版本的头部就能用。Sitemap那一份不能直接用——我们团队用四个语言版本实测,它只吐出一个 url块,loc固定是x-default那条地址,另外三个语言页在这份代码里完全没有归属。而谷歌的要求是为每个网址各建一个url元素、每个元素里列出包括自己在内的全部版本。更微妙的是,工具自己的提示语明明写着“标签必须双向引用才生效”,它却生成了一份单向的。另外自动生成网址时www会被静默剥掉,批量导入猜语言码会把 /my/ 认成马来语。
> 摘要:这款生成器出的两份代码,质量差得有点远。HTML那一份是对的,标签集完整、带自引用、x-default也在,复制到每个语言版本的头部就能用。Sitemap那一份不能直接用——我们团队用四个语言版本实测,它只吐出一个 url块,loc固定是x-default那条地址,另外三个语言页在这份代码里完全没有归属。而谷歌的要求是为每个网址各建一个url元素、每个元素里列出包括自己在内的全部版本。更微妙的是,工具自己的提示语明明写着“标签必须双向引用才生效”,它却生成了一份单向的。另外自动生成网址时www会被静默剥掉,批量导入猜语言码会把 /my/ 认成马来语。
hreflang是国际化SEO里最容易被做成“看起来做了”的一件事。标签写了,代码也上线了,搜索控制台里却常年一片红,或者干脆什么反馈都没有——因为它的失效方式极其安静,不报错、不警告,就是不生效。
它安静的原因在于规则本身:这套标注不是单方面声明,而是一组页面之间的相互确认。一旦某一环没对上,整组标注会被当作无效丢掉。而工具通常只帮你生成其中一环。
这篇要做的事,是把这款生成器给你的东西拆开看:哪一份可以直接用,哪一份必须自己加工,以及加工的时候要补上什么。
## 这个生成器到底替你做了什么?
它做的是一件很朴素的事:把你填的语言、地区、网址整理成一张表,然后按两种模板拼成代码。整个过程在你自己的浏览器里完成,不经过服务器。
界面上有两种工作方式。自动模式下你只填一个基础网址,选好网址结构,工具会按规则给每个语言版本推算出对应的地址。手动模式下每条地址你自己填,工具只负责拼标签。
输出可以选HTML、Sitemap或者两者都要。这两种形态对应hreflang的两种落地方式:写在页面头部,或者写进XML网站地图。两种方式官方都认,选一种做到底就行,同时做两份反而增加维护成本,还容易两边打架。
需要说清楚的是它的能力边界:它只管把代码拼出来,不验证你填的地址是否存在、是否互相指向、是否和页面上的canonical标签一致。这三件事恰恰是hreflang失效的三大原因。
这种分工其实很常见——生成器管拼装,验证是另一码事。麻烦在于hreflang这件事上,拼装的部分本身就不难,难的全在验证那一侧。所以用它的时候心里要有个预期:它替你省的是敲键盘的力气,不是动脑子的力气。
另外还有一层:它一次只处理一组页面。所谓一组,指的是同一个内容的各个语言版本,比如首页的四国语言版是一组,某个产品页的四国语言版是另一组。工具不知道你站上有多少组,也不会帮你跨组检查一致性。页面一多,这个“一次一组”的节奏就是主要的成本来源。
## 三种网址结构该怎么选?
自动模式提供子域名、子目录和组合三种结构,选哪种不只是形式问题,它影响后续的运维成本。
结构 | 形如 | 适合 | 代价 |
子目录 | example.com/de/ | 大多数中小站 | 共用一个站点权重,维护最省 |
子域名 | de.example.com | 各地区独立团队运营 | 配置灵活,但地域信号偏弱 |
组合 | de.example.com/en/ | 地区与语言两个维度交叉 | 结构最复杂,容易做乱 |
谷歌的多地区站点文档给出的判断依据很实在:国家顶级域名给出的地域信号最强,但成本高、只能对准一个国家;通用域名下的子目录维护最省心;子域名配置灵活,缺点是用户不一定一眼看出这是给哪个地区的。
官方还明确不推荐一种做法:用网址参数区分地区,比如在地址后面挂个地区代码。这种结构没法按网址做切分,搜索引擎和分析工具都难处理。工具没提供这个选项,算是替你挡掉了一个坑。
对绝大多数刚开始做多语言的站,子目录是稳妥的默认选择。等某个市场真的做到需要独立团队、独立服务器的规模,再考虑拆出去。
## 为什么它生成的sitemap代码是单向的?
这是全文最关键的一节,也是这款工具最需要提防的地方。
我们做了一次干净的验证:填入四个语言版本——英语美国、中文中国、德语德国、日语日本,其中英语版设为默认,然后分别取HTML和Sitemap两份输出。
HTML那份没问题,五行标签,四个语言版本各一行,外加一行x-default,指向默认版。
Sitemap那份是这样的:
https://example.com/
数一下:四个语言版本,输出里只有一个 url 块。这个块的 loc 是 https://example.com/,也就是默认版那条地址。
这意味着这份代码只声明了一件事:英语版有这四个语言的替代版本。至于中文版、德语版、日语版有没有替代版本,这份代码只字未提。
谷歌的本地化版本文档对sitemap写法的要求写得非常具体:为每个网址创建一个单独的 url 元素,并且每个 url 元素都必须有子元素列出每一个替代版本,包括它自己。按这个要求,四个语言版本应该产出四个 url 块,每个块里各有五行标注。
差距是四倍。
## 单向标注上线之后会发生什么?
不会报错,这正是它麻烦的地方。
hreflang的生效机制是相互确认。谷歌的原话是:如果两个页面没有互相指向,这些标签会被忽略。你在英语版上声明“德语版在这里”,谷歌会去德语版看一眼,确认德语版有没有反过来说“英语版在那里”。确认不上,这条关系就不算数。
把上面那份单向代码贴进sitemap,结果是:谷歌读到英语版指向另外三个版本的声明,然后去另外三个版本找回指,一个都找不到——因为这份sitemap里根本没有它们的 url 块。于是四条关系全部作废。
整套标注等于没做,但你的文件里确实躺着五行 xhtml:link,控制台里也不会跳出红色警告告诉你“这些标注是单向的”。这就是那种典型的“看起来做了”的状态,能瞒过内部检查,瞒不过搜索引擎。
最讽刺的是,工具自己是知道规则的。生成结果下方那行提示语原文写着:标签必须双向引用才生效。它把正确的规则告诉了你,然后给了你一份不符合这条规则的代码。
## 那么这份sitemap代码该怎么用?
它不是废的,把它当模板就行。正确的用法是拿它当一个块的样板,自己复制成N份。
具体做法是:把生成的那个 url 块复制四份,然后逐份修改 loc,让它们分别指向四个语言版本的地址。中间那五行 xhtml:link 完全不用动——每个块里的替代版本清单本来就应该一模一样,包含全部版本和x-default。
改完之后的结构大致是这样:
https://example.com/
...五行标注...
https://example.com/zh/
...同样的五行标注...
四个语言版本就是四个块,每个块里那五行标注一字不改地重复。这一点常让人觉得别扭——五行标注抄四遍,看着冗余得很。但这正是规范要求的:每个页面都要独立、完整地声明自己所在的这一组。
顺带说个对照:同一个站上那款做XML网站地图的工具,在这件事上反而做对了。它的多语言模式会给每条地址各建一个 url 块,结构完全符合规范。同一件事两款工具一对一错,具体差别我们在Sitemap生成器那篇实测 (https://zhangwenbao.com/sitemap-generator-xml-lastmod-priority-validation-guide.html)里也提到了。语言版本多的时候,用那款拼骨架可能更省事。
## 直接粘进sitemap.xml为什么会报解析错误?
因为工具给的是个片段,不是完整文件,缺了两样东西。
第一样是外壳。sitemap文件必须有一个 urlset 根元素把所有 url 块包起来,还得有XML声明行。工具输出的是从 开始的裸片段。
第二样更容易被忽略:命名空间声明。那些标签前面的 xhtml: 前缀不是随便写的,它必须在根元素上声明来源。声明缺失时,XML解析器遇到一个没定义过的前缀会直接报错——不是警告,是整个文件解析失败。
完整的头应该长这样:
粘进已有文件的话,检查一下那个文件的 urlset 上有没有 xmlns:xhtml 这一句。绝大多数插件生成的sitemap是没有的,因为它们本来就不打算放hreflang。少了这句,你辛苦拼的四个块会让整份文件报废,连原来能正常工作的部分一起废掉。
这也是我们更推荐用HTML方式落地的原因之一:改页面头部只影响单个页面,改sitemap一旦出错是整份文件级别的事故。
## HTML那一份为什么反而可以直接用?
说完毛病,得公道地讲讲它做对的地方。HTML输出这一份质量是合格的。
它输出的标签集包含三个要件:每个语言版本各一行、其中包含指向自己的那一行、外加一行x-default。这三样齐了,就是一份完整的标注。
自引用那一行特别容易被手写的人漏掉。很多人觉得“这是我自己,还用得着标”——用得着。官方文档明确要求每个语言版本必须列出自己以及所有其他版本。少了自引用,这一组的对称性就破了。工具默认就带着它,省了一个常见错误。
x-default的处理也对。它是额外的一行,指向你设为默认的那个版本,而不是替换掉那个版本原本的标注。所以默认版会出现两次——一次以自己的语言代码出现,一次以x-default出现。这不是重复,是正确写法。
用法很直接:把这一整段复制到每一个语言版本页面的头部区域,一字不改。四个语言版本,四个页面,贴同样的内容。这样每个页面都完整声明了自己所属的组,双向确认自然成立。
## 自动生成的网址里,www去哪儿了?
这是个藏得比较深的行为,我们实测才发现。
在自动模式下填入基础网址 https://www.example.com/shop/,选子目录结构,工具给德语版生成的地址是 https://example.com/de/shop/。www 不见了。子域名结构下同样如此,www 会被剥掉之后再拼上语言前缀。
从代码逻辑上看这是有意为之——处理子域名结构时必须先把已有的前缀去掉,否则会拼出 de.www.example.com 这种畸形地址。问题在于它对子目录结构也一视同仁地剥了,而子目录结构根本不需要动主机名。
后果取决于你的站怎么配置。如果 example.com 会301跳到 www.example.com,那么这批hreflang全都指向了跳转地址。搜索引擎沿着标注走过去,得到的是一次重定向,而不是目标页面本身。
这类标注即便不算完全失效,也是在给自己制造不必要的信号损耗——你告诉搜索引擎“德语版在这儿”,它到了那儿却被告知“不对,在隔壁”。做多语言的站在这一步翻车,往往几个月后才从数据里看出端倪。
解决办法很简单:自动生成之后,逐条核对地址栏里的主机名对不对。工具生成的地址是可以直接编辑的,改完再点生成。或者干脆用手动模式,自己把每条地址填准,稳当。
## 批量导入猜出来的语言代码可信吗?
不太可信,得逐条看过。
批量导入功能会从你粘进来的网址里猜语言。它的判断依据是路径里的两字母目录段——看到 /de/ 就认成德语,看到 /ja/ 就认成日语。规则简单,多数时候管用,但两字母目录并不都是语言代码。
我们拿五条地址试了一遍,结果如下:
网址 | 工具猜的语言 | 实际是什么 |
/de/produkte/ | 德语 | 对 |
/my/account/ | 马来语 | 我的账户 |
/no/results/ | 挪威语 | 无结果页 |
/it/support/ | 意大利语 | 可能是技术支持 |
/en/de/ | 英语 | 只取了第一段 |
后四条全是误判。my、no、it 恰好都是合法的语言代码,也恰好都是英文里的常用词,这种巧合在真实站点的路径里并不罕见。而最后一条说明它只认第一个匹配到的两字母段,多层结构会取错。
批量导入的价值在于省去逐条粘贴地址的力气,这部分它做得不错。猜出来的语言代码就当个初始值,导入之后挨个下拉框核对一遍,几十条也就一两分钟的事。把这一步省掉,你可能会给账户页打上马来语的标签,然后困惑为什么马来西亚的流量一直不对劲。
## 语言代码和地区代码怎么填才规范?
这一处工具帮你规避了大部分风险,因为它用的是下拉选择,不让你自由输入。
hreflang的取值要求遵循BCP 47语言标签规范。这套规范由RFC 5646定义,语言子标签来自ISO 639-1的两字母代码,地区子标签来自ISO 3166-1的两字母国家代码,中间用连字符连接。
工具生成的代码形如 en-US、zh-CN,语言小写、地区大写。这个大小写用法符合RFC 5646的书写惯例——规范里说明两字母的地区子标签按惯例全大写。严格来说搜索引擎对大小写不敏感,但按惯例写更利于人读,也更不容易在跨系统传递时出岔子。
有两个容易搞错的点值得单独说:
- 第二段是地区不是语言。en-GB 的意思是“给英国用户看的英语版”,不是“英式英语”。它约束的是受众所在地,不是语言变体。
- 只有语言没有地区是合法的。de 表示“给所有德语使用者”,覆盖德国、奥地利、瑞士。除非你真的为不同国家准备了不同内容(比如价格和配送政策不同),否则只写语言更省事,也更不容易做错。
反过来,只写地区不写语言是不合法的。没有 -US 这种写法,语言子标签是必需的。工具的下拉设计不让你这么填,这一点上它是安全的。
## x-default到底该指向哪个页面?
工具让你在语言列表里点一个地球图标指定默认版,这个选择决定了x-default那一行指向哪儿。很多人随手点了英语版就过去了,其实这里值得想两秒。
x-default的语义是:当用户的语言和地区都不匹配你列出的任何一个版本时,把他带到这里。它是个兜底出口,不是“主版本”的意思。
按这个语义,合适的候选有两类。一类是语言选择页——用户落地后自己挑,适合语言版本多、受众地域分散的站。另一类是覆盖面最广的那个语言版本,通常是英语版,适合大部分站点,因为英语是最可能被看懂的兜底选项。
不合适的选择也很明确:别指向一个小语种版本。如果你的x-default指向德语版,那么一个用泰语的用户搜到你的站,落地看到的是一页德语。这不是兜底,这是把人劝退。
还有个常见疑问:x-default是必须的吗?严格说不是强制项,标注组里没有它也能工作。但加上它成本极低,收益是把“其他所有人”这部分流量的落地行为掌握在自己手里,而不是交给搜索引擎猜。工具默认就带着这一行,不用特意去掉。
## 同一种语言卖到好几个国家该怎么标?
这是跨境电商最常撞上的场景:英语站要同时面向美国、英国、澳大利亚,三个市场的价格、货币、配送政策都不一样,但正文内容高度重合。
这种时候语言代码就得带上地区了,写成 en-US、en-GB、en-AU。工具的地区下拉框正是为这个场景准备的,选了地区之后生成的代码会自动变成带连字符的形式。
但要提醒一句:hreflang解决的是“给谁看”的问题,解决不了“内容太像”的问题。三个站点的商品描述如果一字不差,搜索引擎照样可能认为这是重复内容而只选一个收录。hreflang的作用是在它决定收录之后,把对的版本送到对的用户面前,而不是保证三个版本都被收录。
所以这类站的功课得做在内容上:价格和货币要真实体现地区差异,配送时效和退换政策要写各自的实际情况,尺码表要按当地标准。有了这些实质差异,三个版本才站得住。这个话题的细节,同一种英语卖到美英澳 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html)那篇拆得比较透。
另外别忘了给这一组加一个只写语言的兜底项。除了三个带地区的版本,再标一个 en,指向你最主要的那个英语站。这样爱尔兰、新加坡这些没单独做站的英语市场也有个明确归属,不至于被随机分配。
## 页面头部、网站地图、HTTP头,三种方式怎么选?
hreflang官方认可三种落地位置,工具只覆盖了前两种,第三种得自己配。
方式 | 适合 | 要注意 |
页面头部标签 | 页面数不多、能改模板 | 每个页面都要带完整标签集,页面多了会撑大HTML体积 |
XML网站地图 | 页面数多、不方便改模板 | 集中管理,但每个版本都要有独立的url块 |
HTTP响应头 | PDF、图片等非HTML文件 | 只能在服务器配置里做,改起来最麻烦 |
选择的关键不在于哪个更好,而在于只选一种。三种方式官方都认,但同时用两种就得同时维护两份,一旦有一处漏改,两份就会打架,而搜索引擎面对矛盾信号时通常谁都不信。
页面少于几百个、模板改得动,就用页面头部,最直观也最好排查——右键查看源代码就能验证。页面成千上万、或者模板归别的团队管,就用网站地图,一个文件管全站。
第三种方式很少用到,但有个场景绕不开:多语言的PDF手册。这类文件没有HTML头部可写,只能在服务器上给它们配响应头。做产品文档站的可能会碰上,配置方法在.htaccess重定向生成器那篇 (https://zhangwenbao.com/htaccess-redirect-rewriterule-301-302-parse-guide.html)提到的服务器配置思路里有相通之处,都是在服务器层面而不是页面层面动手。
## 多语言站还有哪些配套动作容易被漏?
标注做对只是及格线,下面这几件事没做好,多语言站照样跑不起来。
语言切换器要用真链接。页面上那个切换语言的下拉框,如果是靠脚本跳转的,爬虫走不过去。它应该是实实在在的 a 标签,能被点击也能被抓取。这一条经常被前端做成纯脚本交互,然后整站的语言版本互相之间一条链接都没有。
别按IP强制跳转。检测到用户来自德国就自动跳德语版,听着贴心,实际上爬虫大多从美国的地址访问,一跳就把它们全导到英语版去了,其他语言版本永远抓不到。正确做法是提示而不是强制——弹个横幅问“要不要切换到德语版”,把选择权留给用户。
翻译要真翻译。机器翻译直接上线、或者只翻了界面文案而正文还是英文,这类页面在搜索引擎眼里价值很低。语言版本的价值来自内容本身对当地用户有用,不是来自多了一个语言标签。
每个版本都要有自己的内链网络。德语版的文章之间要互相链接,而不是全都链回英语版。一个只有入口没有内部链接的语言版本,爬虫进去转一圈就出来了。
## 做多语言标注最常见的五个错误长什么样?
把前面散落的问题集中成一张表,上线前对着过一遍。
错误 | 表现 | 怎么查 |
缺回指 | 标注全被忽略,控制台报“没有返回标记” | 逐个版本抓源码比对,标签集必须完全一致 |
缺自引用 | 同上,对称性破了 | 看每个页面有没有指向自己的那一行 |
指向跳转地址 | 信号损耗,标注可能失效 | 跟着标注挨个打开,看是不是200 |
canonical全指主版本 | 其余语种从搜索结果消失 | 看每个版本的canonical是不是指向自己 |
语言代码写错 | 控制台报“未知的语言代码” | 核对是不是合法的两字母代码组合 |
这五条里,前两条本质上是同一件事的两种表现——都是对称性没做到。它们加起来大概占了hreflang失效原因的一多半,而工具生成的那份单向sitemap代码,正好会把你直接送进第一条。
第三条最隐蔽,因为标注本身写得完全正确,问题出在地址多了个或少了个 www、多了个或少了个末尾斜杠。这类差异肉眼扫过去根本看不出来,得真去访问一遍才知道。
## hreflang和canonical打架了听谁的?
这是多语言站最容易自伤的一处,工具完全管不到,但不讲清楚前面做的都可能白费。
最常见的错误做法是:把所有语言版本的canonical都指向英语主版本。想法是“避免重复内容”,实际效果是亲手废掉整套hreflang。
因为这两个标签说的是相反的话。canonical指向别处,意思是“我不是正主,请收录那个页面”;hreflang说的是“我们是一组平等的语言版本,请按用户的语言各收各的”。两个信号撞在一起,搜索引擎按canonical来——于是所有语言版本都被合并到英语版,其余语种在搜索结果里彻底消失。
谷歌关于网址规范化的文档给出的做法很明确:使用hreflang时,要为每个页面指定同语言的规范网址。也就是说德语页的canonical应该指向德语页自己,而不是英语页。
同一份文档里还有一条提醒:别用不同的方式给同一个页面指定不同的规范网址,比如网站地图里说是这个、页面上的canonical标签说是那个。信号打架的时候,搜索引擎只能自己猜,而它猜的结果通常不是你想要的。
值得一提的是,文档里还说到谷歌在做规范化判断时,会偏好那些属于hreflang集群的网址。把这一组做对做完整,本身就是一个正向信号。关于这套标注在落地时的对称性细节,hreflang标签怎么落地 (https://zhangwenbao.com/hreflang-implementation-return-tags-x-default-canonical-mistakes.html)那篇讲得更细,做之前值得过一遍。
## 几个语言版本才值得动手做标注?
这个问题值得在动手之前想清楚,因为hreflang是有维护成本的,而且成本随版本数增长得不慢。
只有两个语言版本时,收益最直接,工作量也最小——两个页面各贴一份三行的标签集,做完基本不用再管。这个投入产出比很好,值得做。
到四五个版本,事情开始变得需要纪律。每新增一个语言,所有已有版本的标签集都要跟着加一行。四个版本时是四个页面各改一次,五个版本时是五个页面各改一次。漏改任何一个,那一组的对称性就破了,而破了不会有任何提示。
再往上,手工维护基本就不现实了。十个语言版本意味着每个页面头部有十一行标注,全站几千个页面,任何一次结构调整都可能引发大面积失效。这个规模必须交给程序——要么用建站系统的多语言插件自动输出,要么写脚本从数据库生成网站地图。
那这类手工生成器的位置在哪儿?主要在两处:做样板——先手工拼一组标准的出来,确认结构对了,再让开发照着这个格式做自动化;做排查——线上某一组标注不对劲,用工具重新拼一份正确的,和线上那份逐字比对,差异一眼可见。
还有一种情况适合手工:语言版本不多,但页面结构特殊,比如只有几个落地页需要做多语言,主站其他部分不涉及。这种局部需求上插件反而是杀鸡用牛刀,手工贴几段最干脆。
## 标注上线之后怎么确认它真的生效了?
生成代码只是第一步。hreflang的验证有点特殊,因为它是组关系,得成组地看。
第一步,抓源码对称性。把每个语言版本的页面源码拉下来,看头部的标签集是不是完全一致。四个页面应该有一模一样的五行标注。任何一个页面少一行或者地址写错一个字符,这一组就破了。
第二步,跟着标注跳一遍。把标注里的每个地址挨个打开,确认返回的是200而不是跳转,落地的也确实是那个语言的内容。这一步能抓出前面讲的www被剥掉的问题。
第三步,查canonical。每个语言版本的canonical应该指向自己。这一条最容易被CMS的默认配置搞砸,尤其是用插件做多语言的站。
第四步,看控制台反馈。搜索控制台里有专门的国际定位报告,会列出检测到的hreflang错误,最常见的两类就是“没有返回标记”和“未知的语言代码”。这两条正好对应本文讲的两个坑。
另外提醒一句关于时间的预期:hreflang生效不是立等可取的事。搜索引擎得把这一组页面全都重新抓一遍,才能确认对称关系成立,页面多、抓取频率低的站等上几周很正常。所以上线后头两周没看到变化,先别急着改代码,那样只会让你分不清是哪一版在起作用。
页面数量多的时候,前两步靠人眼不现实,用爬虫工具跑一遍更实际。关键是别只验一个页面就宣布完工——单个页面的标注看着再完美,只要对面没回指,它就是不生效的。
🔧 动手试试:Hreflang多语言标签生成器
填好语言、地区和网址,一键出HTML与Sitemap两种格式的标注代码,支持自动推算多语言网址,全程浏览器本地完成。
保哥自研免费在线工具,浏览器打开就能用。
→ 打开Hreflang多语言标签生成器 (https://zhangwenbao.com/tools/hreflang-generator.php)
## 常见问题解答
## 工具生成的sitemap代码可以直接粘进网站地图吗?
不可以,得先加工。它只输出一个url块,loc固定是默认版那条地址,四个语言版本共用这一个块。而谷歌要求为每个网址各建一个url元素、每个元素列出包括自己在内的全部版本。正确用法是把这个块复制成N份,逐份改loc指向各语言版本,中间那几行标注一字不动。另外它给的是裸片段,缺urlset外壳和xmlns:xhtml命名空间声明,直接粘会让整份文件解析失败。
## 单向的hreflang标注上线会报错吗?
不会报错,这正是它麻烦的地方。hreflang靠相互确认生效,谷歌明确说过两个页面如果没有互相指向,标签会被忽略。单向标注的结果是整组关系全部作废,但文件里确实躺着那几行标签,控制台也不会主动告诉你它们是单向的。这属于典型的看起来做了,能瞒过内部检查,瞒不过搜索引擎。
## HTML那一份输出可以直接用吗?
可以,这份是合格的。它包含三个要件:每个语言版本各一行、指向自己的自引用那一行、以及一行x-default。用法是把整段复制到每一个语言版本页面的头部,一字不改,四个页面贴同样的内容。默认版会出现两次,一次以自己的语言代码、一次以x-default,这不是重复而是正确写法。
## 为什么自动生成的网址里www不见了?
工具在推算多语言网址时会先把主机名里的www剥掉。这个处理对子域名结构是必要的,否则会拼出畸形地址,但它对子目录结构也一视同仁地剥了。如果你的站会从不带www的地址301跳到带www的,那这批标注全都指向了跳转地址,搜索引擎沿着标注走过去只会得到一次重定向。生成之后逐条核对主机名,或者直接用手动模式填准。
## 批量导入自动识别的语言代码准吗?
只能当初始值,必须逐条核对。它的规则是从路径里找两字母目录段,看到de认德语。问题是两字母目录未必是语言,实测 /my/account/ 被认成马来语、/no/results/ 被认成挪威语、/it/support/ 被认成意大利语,而多层结构如 /en/de/ 只取第一段。导入之后挨个下拉框看一遍,几十条也就一两分钟。
## 可以只写语言不写地区吗?
可以,而且多数情况下更推荐。只写语言表示面向所有使用该语言的用户,比如德语版覆盖德国、奥地利、瑞士。只有当你真的为不同国家准备了不同内容,比如价格和配送政策不一样,才需要细分到地区。反过来只写地区不写语言是不合法的,语言子标签是必需的,工具的下拉设计不让你这么填。
## 所有语言版本的canonical都指向英文主版本行不行?
绝对不行,这会亲手废掉整套hreflang。canonical指向别处等于声明自己不是正主,hreflang说的是这些版本平等各收各的,两个信号相反时搜索引擎按canonical走,结果是其余语种在搜索结果里彻底消失。谷歌的规范化文档要求使用hreflang时为每个页面指定同语言的规范网址,德语页的canonical就该指向德语页自己。
## 权威参考资料
- 谷歌本地化版本标注指南 (https://developers.google.com/search/docs/specialty/international/localized-versions)——“为每个网址创建一个单独的url元素”以及每个元素必须列出包含自身在内的全部替代版本,这两句是判断本文那份单向代码不合规的直接依据。
- 谷歌多地区与多语言站点管理 (https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)——国家顶级域名、子域名、子目录三种结构的取舍分析,以及明确不推荐用网址参数做地域定位的表述。
- 谷歌网址规范化文档 (https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)——“使用hreflang时为每个页面指定同语言的规范网址”的原文出处,也说明了谷歌在规范化判断中偏好属于hreflang集群的网址。
- RFC 5646语言标签规范 (https://www.rfc-editor.org/rfc/rfc5646.html)——BCP 47的主体文件,规定语言子标签取自ISO 639-1、地区子标签取自ISO 3166-1,以及两字母地区子标签按惯例大写的书写约定。
- MDN link元素文档 (https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/link)——hreflang属性的取值必须是有效的BCP 47语言标签,以及该属性仅在href存在时才有意义的说明。
- Sitemaps XML协议 (https://www.sitemaps.org/protocol.html)——urlset根元素与XML命名空间声明的结构要求,解释了为何缺少xmlns:xhtml声明会导致整份文件解析失败。
## Google自动翻译正在悄悄抢走你的国际流量:外贸站的识别与防御
- URL:https://zhangwenbao.com/google-translated-results-international-traffic-defense.html
- 分类:国际SEO
- 发布:2026-06-28 | 更新:2026-06-28
- 摘要:别让Google机翻替你敷衍海外市场。这篇拆解翻译结果与Chrome自动翻译的四笔账,给出notranslate局部保护、hreflang加真本地化的防御组合,以及按翻译流量数据挑市场做本地版的决策树。
- 关键词:hreflang,多语言SEO,机器翻译,国际SEO
> **TLDR**:摘要:很多外贸独立站主盯着hreflang、盯着多语言版本,却没注意到一件事:Google早就在“替你”把页面翻译给海外用户看了。搜索结果里的翻译结果(Translated Results)已经覆盖21种语言,加上占了全球约65% 份额的Chrome浏览器内置翻译,你的一篇英文页,可能正以阿拉伯语、葡萄牙语、越南语的样子被陌生用户读着——译文质量你管不了,品牌词被翻歪你也不知道,更要命的是,你因此失去了做“正经本地版”的动机和真实需求信号。这篇把这个被忽略的现象讲透:它的官方机制是什么、为什么说它在“抢”流量、怎么用GSC把它量化出来、又怎么反过来把它当成免费的市场验证工具,最后给一套外贸站能直接用的决策树。
> 摘要:很多外贸独立站主盯着hreflang、盯着多语言版本,却没注意到一件事:Google早就在“替你”把页面翻译给海外用户看了。搜索结果里的翻译结果(Translated Results)已经覆盖21种语言,加上占了全球约65% 份额的Chrome浏览器内置翻译,你的一篇英文页,可能正以阿拉伯语、葡萄牙语、越南语的样子被陌生用户读着——译文质量你管不了,品牌词被翻歪你也不知道,更要命的是,你因此失去了做“正经本地版”的动机和真实需求信号。这篇把这个被忽略的现象讲透:它的官方机制是什么、为什么说它在“抢”流量、怎么用GSC把它量化出来、又怎么反过来把它当成免费的市场验证工具,最后给一套外贸站能直接用的决策树。
## 先看清这个被忽略的现象:你的页面正在被Google“替你翻译”
保哥先讲个真事。前阵子帮一个做户外储能的独立站客户复盘流量,对方一口咬定自己“只做英文站,没碰过别的语言”,可后台数据里偏偏躺着一堆来自印尼、越南、巴西的自然搜索访问。客户的第一反应是被刷量了,差点去封IP。
真相一点都不玄乎:这些用户用的是非英语界面,Google在搜索结果页里直接把这个英文站的标题和描述翻译成了当地语言展示,用户一点,看到的就是一整页机器翻译过的内容。整个过程,站长完全不知情,也没法干预。
这就是Google的“翻译结果”功能。它不是新东西,但绝大多数外贸站根本没把它当回事,更别说去管理它。问题在于,这个被很多人当成“免费福利”的功能,是一把不折不扣的双刃剑——它在帮你触达更多人的同时,也在悄悄抢走你本该亲手赚到的国际流量和转化。今天就把这件事掰开揉碎讲清楚。
## 翻译结果(Translated Results)到底是什么
按Google官方的说法,当搜索者使用的语言和你页面的语言不一致时,Google“有时候会把搜索结果的标题链接和摘要翻译成搜索者的语言”。如果用户点了这条被翻译过的结果,他打开的页面本身也会被自动翻译。
几个关键的技术细节,外贸站主一定要搞明白,否则后面的防御无从谈起:
- Google不托管翻译页。用户点击后,Google是实时从你的服务器把原页面抓回来,重写URL,再当场翻译呈现。官方原话是,这跟用户“通过Google翻译或者Chrome浏览器内置翻译打开你的原始结果,没有任何区别”。
- JavaScript、图片、页面交互通常都正常工作。所以从用户那一侧看,体验上跟访问你的真站差别不大,他甚至意识不到自己看的是机翻版。
- 覆盖语言已经很广。目前Google可以把结果翻译成阿拉伯语、孟加拉语、英语、法语、德语、印地语、印尼语、韩语、葡萄牙语、西班牙语、泰米尔语、泰语、土耳其语、乌尔都语、越南语等21种语言,移动端和桌面端都支持。这些恰恰是外贸独立站最看重的新兴市场。
- 它默认对所有页面生效。你不需要做任何设置去“开启”它,它本来就开着。换句话说,你的站现在就在被翻译,只是你没去看而已。
想看Google怎么自己描述这套机制,最权威的就是 Google搜索中心的翻译结果官方文档 (https://developers.google.com/search/docs/appearance/translated-results),里面连退出方法的代码都给全了,后面会用到。
## 它和“自己发机翻内容被惩罚”是两码事,别搞混
这里必须先澄清一个特别容易混淆的点,因为见过太多人在这上面拧巴。
你肯定听过一条老规矩:自己用机器翻译批量生产页面、不加人工润色就上线,Google的质量系统会把它识别成低质内容压排名,严重的甚至连累整个域名所有语言版本。这条是对的,机翻内容当原创内容发,确实是大坑——具体机翻内容怎么一步步拖累排名、为什么本地化必须是再创作而不是逐句翻译,Ahrefs的国际SEO最佳实践指南 (https://ahrefs.com/blog/international-seo/)里有成体系的实证拆解,值得一读。
但是——“翻译结果”功能完全是另一回事。它发生在用户那一侧、Google那一侧,是Google应用户请求临时把你的优质原创页翻给用户看,并不是你自己在站上发布机翻页面。所以它不会让你吃机翻内容的处罚。你站上躺着的还是那篇精心写的英文原稿,Google索引和评估的也是它。
把这两件事分清楚很重要:被惩罚的是“你主动发机翻当内容”,而“翻译结果”是“用户被动看到机翻版的你”。前者要避免,后者要管理。一个是内容质量问题,一个是流量与品牌的运营问题,解法完全不同。
## Chrome内置翻译:比搜索结果更大的隐形入口
如果说搜索结果里的翻译还只是“点进来之前”的一道翻译,那Chrome浏览器自带的整页翻译,就是一个量级大得多的隐形入口,而且它的覆盖面被严重低估了。
按 StatCounter全球浏览器市场份额统计 (https://gs.statcounter.com/browser-market-share) 的数据,Chrome长期稳坐全球约65% 的浏览器份额,移动端同样过半。这意味着你的海外访客里,每三个人就有两个用着Chrome。而Chrome默认会检测页面语言,只要和用户的界面语言不一致,顶部就弹出“翻译此页”,很多用户甚至把“始终翻译这种语言”勾上了,全程一键都不用点。
叠加起来算笔账:一个巴西用户在Google上搜到你的英文页(可能还是翻译结果带进来的),用Chrome打开,浏览器又自动翻一遍。从头到尾,他读到的没有一个字是你亲手写的葡语,全是机器现翻的。而你呢,连他来过都未必数得清——因为这些行为大多在客户端完成,服务器日志里看到的还是那篇英文页被访问。
这就是问题的规模:它不是边角料流量,对很多外贸站来说,这部分“被机翻服务的国际用户”可能占了相当比例,只是一直藏在“英文页流量”这个统计口袋里,没被单独拎出来看过。
## 为什么说它在“抢”你的国际流量:先算第一笔账
说“抢”可能有人不服气:Google免费帮我把内容送到更多人面前,这不是好事吗?短期看是。但站在一个想认真做海外市场的外贸站角度,这里面藏着四笔容易被忽略的账,先说最关键的第一笔。
第一笔账:你失去了做“正经本地版”的动机和真实需求信号。
当Google用机翻把你的页面“凑合”送达海外用户、还真带来了一些转化时,你很容易产生一种错觉——“我啥都没做,这个市场就有单子了,挺好”。于是你就懒得去做正经的本地化了。可机翻凑合带来的转化,和一个真正本地化的站能拿到的转化,根本不是一个量级。
更隐蔽的损失是需求信号。一个用葡语界面、靠机翻读你英文页的用户,他在你站上的搜索框里不会用葡语搜(因为你站上没葡语内容),你也就拿不到“巴西用户到底用什么词找我这类产品”这种宝贵的一手数据。本地市场真正高频的搜索词、习惯叫法、本地化的产品命名,全被这层机翻给糊住了。你以为风平浪静,其实是把一整个市场的需求地图,主动让给了机器翻译去敷衍。
## 第二笔账:机翻质量你不可控,品牌和转化在裸奔
机器翻译这些年确实进步神速。维基百科 Google Translate词条 (https://en.wikipedia.org/wiki/Google_Translate) 里记录得很清楚,2016年它就从老式的短语统计翻译,换成了基于神经网络的GNMT,后来又上了Transformer架构,日常句子的通顺度今非昔比。但“通顺”不等于“卖得动货”。
外贸场景里,机翻最容易翻车的恰恰是最值钱的几个地方:
- 品牌名和产品型号。机翻常把品牌名当普通词给翻了,你精心打磨的品牌资产,在海外用户眼里变成一个莫名其妙的当地词。
- 行业术语和卖点。储能行业的“循环寿命”“深度放电”,跨境美妆的“精华”“安瓶”,机翻经常翻得似是而非,专业用户一眼看出不对劲,信任瞬间崩塌。
- 行动号召(CTA)和促销话术。“限时”“加购”“订金尾款”这类直接关系转化的措辞,机翻翻出来往往生硬到没人想点。
- 文化语境。同一句话在不同市场的得体程度天差地别,机翻没有这根弦。
关键在于,这些翻译全程不经过你的手,你连“翻错了”都不知道。用户读到一段别扭的译文,默默关掉页面,你后台只看到一个跳出,永远查不到原因。品牌形象和转化率就在这种你看不见的地方,一点点漏血。
## 第三笔账:翻译页URL被重写,体验和归因都乱了
前面说过,用户点开翻译结果时,Google会重写URL。用户地址栏里看到的,往往是带着Google翻译参数的中转地址,而不是你干干净净的品牌域名。这带来两个实际麻烦。
一是品牌感被稀释。用户想收藏、想复制链接分享给朋友,拿到的是一串Google翻译的长链接,而不是你的域名。口碑传播这一环,无形中被削弱了。
二是分析和归因更难做。这部分流量在你自己的统计工具里,画像常常是模糊的——来源、落地页、语言维度对不齐,你很难干净地把“被机翻服务的用户”单独切出来分析。想精准判断哪个市场值得加码,数据这一关就先卡住了。再叠加机翻页面上你的站内跳转、表单提交可能出现的各种小毛病,一条本该顺滑的转化路径,被切得七零八落。
## 第四笔账:广告与转化追踪可能在翻译页失效
这一笔很多人完全没想到。Google官方文档专门有一节讲广告网络的注意事项:如果你的页面上跑着广告联盟、或者依赖某些第三方脚本来追踪转化,当用户从翻译结果点进来、页面被重写并翻译之后,你的广告和追踪脚本不一定能正确加载和归因。官方明确提示,运营广告网络的站点“可能需要采取额外措施,确保用户点击翻译结果后广告仍正常展示”。
对外贸独立站来说,这意味着两件糟心事:靠广告变现的内容站,这部分翻译流量可能根本没产生广告收入;靠像素和转化代码做再营销、做归因的站,这部分用户可能进了你的漏斗却没被打上标记,回头你做再营销时把他们漏了,做投放复盘时数据也对不上。流量来了,钱和数据却没接住,这才是最冤的。
## 怎么识别:用GSC“翻译结果”过滤器把它量化出来
讲了这么多威胁,但正确的态度始终是:先量化,再决策,不拍脑袋。好消息是,Google Search Console早就给了你一把专门的尺子。
在GSC的“效果(Performance)”报告里,有一个“搜索外观(Search Appearance)”维度,里面就有一项叫 Translated Results(翻译结果)。点开它,你能单独看到:有多少展示、多少点击,是通过翻译结果发生的;进一步还能按国家、按查询拆开看。
这一步几乎是零成本,却能立刻把那团藏在“英文页流量”里的迷雾照亮。建议你现在就去翻一下,重点看三件事:
- 总量占比。翻译结果的展示和点击,占你自然搜索总量的多少?如果是个位数百分比,可以先放一放;如果上了两位数,那它已经是你国际流量盘子里不容忽视的一块。
- 国家分布。哪些国家通过翻译结果来得最多?这是后面那个“反转思路”最值钱的输入。
- 趋势。它是在涨还是在跌?随着Google不断扩展翻译语言,这块在多数站上是缓慢上升的。
用户视角的体验也值得你亲自感受一遍,可以参考 Google搜索帮助里“在搜索上打开翻译页”的说明 (https://support.google.com/websearch/answer/11315137),照着用非英语界面搜一下自己的产品词,你会很直观地看到海外用户眼中的你长什么样。
## 反转思路:把翻译流量当成免费的“市场需求验证”
到这儿,要换个角度了——一个把威胁变武器的角度,这也是这篇文章最想送给你的一招。
外贸站最难的决策之一是:那么多海外市场,我先做哪个本地版?做一个正经的本地化站,要本地关键词调研、母语润色、本地化案例和定价,成本不低,押错市场就是白烧钱。传统做法是靠Google Trends、靠关键词工具去估需求,但那些都是“站外”的间接信号。
而GSC里的翻译结果数据,是一个被严重低估的直接需求信号:它告诉你的是,已经有多少真实用户,在用某种语言、主动搜到了你、并且愿意忍着机翻读你的内容。能让人忍着别扭译文都要看下去、甚至下单,这个市场的需求强度是实打实被验证过的。
所以正确的打法是:
- 把翻译结果按国家排序,揪出那几个流量最大、转化也不差的语言市场。
- 这些市场,就是你做本地化的优先级名单——需求已经被机翻流量验证过,风险最低。
- 反过来,那些Google给你翻译了、却几乎没人点没人转的语言,说明需求弱,可以放心地往后排,省下预算。
这套打法的精髓是:与其纠结Google在“抢”你的流量,不如把它当成一个帮你免费做了A/B测试的市场探测器。它替你试了水,你照着水温下饺子。这比单纯看搜索量工具靠谱得多,因为它带着“真实点击”和“真实转化”这两个最硬的指标。怎么把这些信号接进你的需求研究流程,保哥在 关键词研究升级成搜索需求建模 (https://zhangwenbao.com/keyword-research-search-demand-modeling-opportunity-allocation.html) 那篇里聊过更系统的框架,可以配着看。
## 防御手段一:notranslate——放弃免费触达的核武器
现在进入防御层。最直接的手段,是用Google官方提供的 notranslate 规则,明确告诉Google:别翻译我这个页面。写法有两种,官方文档里都给了。
放在 里的meta标签:
或者用HTTP响应头:
X-Robots-Tag: notranslate
加上之后,Google搜索结果里就不会再出现你这个页面的翻译版本了。听起来很干脆,但这里得泼盆冷水:这是核武器,绝大多数外贸站不该无脑全站开。
原因很简单:你屏蔽掉的不只是“质量不可控的机翻”,也包括“Google免费给你带来的那部分国际曝光”。对一个本地化还没铺开的站,机翻流量再不完美,那也是真金白银的访客和潜在订单。一刀切全站notranslate,等于把婴儿和洗澡水一起倒了。
那它什么时候该用?合理的判断是:仅在局部、特定场景用。比如某个法律条款页、某个对措辞极度敏感的品牌故事页,机翻一旦翻歪会造成实质误导或法律风险,这种页面单独加notranslate是合理的。全站层面,慎之又慎。
## 防御手段二:hreflang + 真本地化,把被动机翻变主动本地版
真正的解法,从来不是“禁止Google翻译”,而是用你自己的、高质量的本地版,去替换掉那个机翻凑合的版本。当某个市场的本地版做出来了,Google自然会优先把你的本地页展示给当地用户,机翻结果的出场机会就被你亲手做的内容挤掉了。
这条路的核心动作有两个:
- 用hreflang把语言/地区版本的对应关系告诉Google。它不会自动把用户重定向到正确版本,但能让Google明白“这几个页面是同一内容的不同语言版”,从而在对的市场展示对的页面,避免你自己的多语言页互相打架。这块的完整做法,国际化SEO和hreflang怎么做 (https://zhangwenbao.com/international-seo-hreflang-complete-guide.html) 那篇里有逐项清单,这里不展开。值得提醒的是,hreflang实现的出错率高得吓人,一个返回标签漏了、一个ISO代码写错,整个集群就被Google忽略,做之前务必当回事。
- 本地化要做“再创作”,不是“翻译”。母语润色、本地关键词调研、本地化的案例和价格,缺一不可。这正是机翻永远给不了你的东西。如何把翻译外包升级成一条真正的本地化生产线,可以看 多语言内容本地化生产线 (https://zhangwenbao.com/multilingual-content-localization-production-pipeline-vs-translation.html) 这篇里的工程化拆解。
多说一句AI搜索时代的新变量:你以为机翻只在传统搜索里给你添乱,其实在AI检索里,翻译内容的“吃亏”更隐蔽——这一点 多语言AI可见性怎么做 (https://zhangwenbao.com/multilingual-ai-visibility-geo-optimization.html) 里专门聊过,本地原生内容在被AI引用这件事上的优势,比在蓝链时代还要大。
这里再给一份过渡期能直接照着做的最小本地化清单,不必一上来就把整站翻个底朝天:先把那个高潜力市场的核心产品页和落地页做母语再创作,这是离成交最近、回报最快的一层;接着补上本地关键词调研,按当地人的真实叫法重写标题和正文,而不是把英文词硬翻过去;再把案例、评价、定价和配送说明换成本地语境;最后才轮到博客这类外围内容。一个市场一个市场地推进,每做完一个就用hreflang接上、观察一轮数据,比贪多嚼不烂地同时铺七国语言稳得多。
说到底,国际SEO是个系统工程,翻译结果只是其中一块拼图。想把多语言多市场的整体打法和效果测量串起来,Search Engine Land的国际SEO指南 (https://searchengineland.com/guide/international-seo-best-practices)提供了一份相对体系化的清单,可以和上面这套本地化动作配着看。
## 防御手段三:品牌词与产品名的局部保护
全站notranslate太重,但放任品牌名被机翻翻歪又太亏,有没有折中?有。HTML提供了页面内的细粒度控制:给不希望被翻译的元素加上 translate="no" 属性,或者套一个 class="notranslate"。
YourBrand
型号 PowerMax-2000 现货发售
这样一来,整页该翻照翻,免费触达不丢,但你的品牌名、产品型号、注册商标这些“翻了就糟”的关键资产,会原样保留。Chrome内置翻译和Google翻译普遍尊重这个标记。
建议是把这件事做成一个清单,过一遍你的核心页面,凡是品牌名、产品系列名、注册商标、专有的技术名词,统统标记上。这是个一劳永逸的小活,成本极低,却能在你还没做完整本地化的过渡期里,守住品牌的体面。它和全站防御并不冲突——一个保资产,一个保流量,叠着用。
## 外贸独立站的决策树:放任、屏蔽,还是本地化
把上面的手段串成一套可执行的决策逻辑,外贸站可以照着走:
页面/市场的情况 | 建议动作 | 理由 |
某语言市场流量小、还没验证需求 | 放任机翻 + 标记品牌词 | 留住免费曝光,先收集需求信号,别急着投入 |
某语言市场翻译流量大、转化也不错 | 优先做正经本地版 | 需求已被验证,本地化回报最高,做完用hreflang接上 |
法律页、合规声明、强品牌叙事页 | 局部notranslate | 翻歪有实质风险,宁可不要这部分翻译曝光 |
核心产品页、落地页(本地版未就绪) | 标记品牌词与型号 + 保留机翻 | 过渡期守住品牌资产,同时不丢转化机会 |
全站任意页面 | 先去GSC看翻译结果数据 | 所有决策都建立在量化之上,不拍脑袋 |
一句话总结这张表的逻辑:默认放任 + 局部保护品牌 + 数据驱动地挑市场做本地化。绝大多数外贸站,真正该花力气的不是去屏蔽Google,而是顺着翻译数据指出的方向,把高潜力市场的本地版一个个做扎实。
## 保哥的实战复盘:从一行翻译流量数据到本地版转化翻倍
回到开头那个储能站。把那批“莫名其妙的非英语流量”搞清楚是翻译结果之后,我们做的第一件事不是封IP,而是打开GSC的翻译结果过滤器,按国家拉了个排序。
数据很说明问题:印尼和巴西两个市场,通过翻译结果带来的点击量明显领先,而且这部分流量的询盘率,虽然比英文母语用户低,但绝对不算差——这恰恰说明,这两个市场的用户是忍着机翻的别扭还在跟你互动,需求强度真实存在。
于是我们没有去碰notranslate,而是反过来把印尼语版本列为第一优先级:找母语写手重做产品页文案(而不是翻译英文页),按印尼本地用户的叫法重新做了一轮关键词,把案例换成东南亚的应用场景,价格也按当地习惯调整了展示方式。同时给品牌名和型号全标上了 notranslate,避免过渡期英文页继续被翻歪。
本地版上线、hreflang接好之后,几个月里印尼市场的自然搜索流量和询盘转化都有明显抬升——具体倍数因为涉及客户数据不便细说,但量级上的提升是肉眼可见的。更重要的是认知上的转变:客户从此不再把那批翻译流量当成“噪声”,而是当成GSC里一个常看的“市场雷达”,下一个要做哪国的本地版,直接看翻译结果数据说话。
这件事给保哥的最大启发是:很多被你当成威胁的东西,换个角度看其实是免费的情报。Google的翻译结果,与其防它,不如读懂它、用好它。
## 几个常被问歪的认知误区
最后扫几个经常被问到、但答案经常被搞反的点:
- 误区一:翻译流量会让我吃机翻内容的处罚。不会。前面讲过,那是用户侧的临时翻译,不是你发布机翻内容。你的原创英文页该怎么排还怎么排。
- 误区二:加了notranslate能提升SEO。没有这回事。notranslate只控制“要不要被翻译展示”,跟你的排名因子没关系,乱加只会白白损失国际曝光。
- 误区三:hreflang能自动把用户送到对的语言版。不能。它只是告诉Google各版本的对应关系,用户的跳转还得靠你自己做地理/语言定向,别指望它代劳。
- 误区四:做了多语言站就不用管翻译结果了。也不对。只要你还有页面是某些语言没覆盖的,那些页面照样会被翻译,GSC该看还得看。
- 误区五:翻译流量都是凑数的垃圾流量,不用管。恰恰相反。能在机翻这么别扭的体验下还愿意读下去、愿意互动甚至下单的用户,需求强度往往比你想象的高。把这部分流量当噪声一忽略,等于把一份免费的市场验证报告随手扔进了垃圾桶,太可惜。
把这几个搞清楚,你对“Google自动翻译”这件事的认知,就比90% 的同行清醒了。
## 常见问题解答
## Google翻译我的页面,会不会让我被算成发布了机器翻译内容而降权?
不会。翻译结果是Google应用户请求、在用户那一侧临时把你的原创页翻译呈现,并不是你自己在站上发布了机翻页面。Google索引和评估的依然是你的原始页面,所以这跟“批量发机翻内容被压排名”是完全不同的两件事,你不会因此被降权。
## 我怎么知道有多少流量是通过翻译结果来的?
去Google Search Console的“效果”报告,在“搜索外观”维度里找“Translated Results(翻译结果)”这一项,点开就能单独看到它带来的展示和点击,还能按国家、按查询进一步拆分。这是目前最直接、最权威的量化方式,零成本。
## 我应该给全站加notranslate把翻译彻底关掉吗?
绝大多数外贸站不建议。全站notranslate会把Google免费带来的国际曝光也一起屏蔽掉,对本地化还没铺开的站来说损失太大。更稳妥的做法是只在法律页、强品牌叙事页这类“翻歪有风险”的局部页面用,全站层面优先靠做本地版来替换机翻。
## 怎么防止品牌名和产品型号被翻译歪?
用页面内的细粒度标记。给不想被翻译的元素加 translate="no" 属性或 class="notranslate",整页照常翻译,但这些被标记的品牌名、型号、商标会原样保留。这是个一劳永逸的小活,成本极低,建议过一遍核心页面统一标上。
## Chrome浏览器的自动翻译和搜索结果里的翻译是一回事吗?
机制相近,入口不同。搜索结果里的翻译发生在用户点进来之前(翻译标题和摘要、点击后翻整页);Chrome内置翻译发生在用户打开页面之后(浏览器检测到语言不一致就提示整页翻译)。Google官方也说,两者对你页面的处理本质上没区别。由于Chrome占了全球约65% 的浏览器份额,它的影响面其实比搜索翻译还大。
## 翻译流量这么多,我到底该先做哪个市场的本地版?
让数据替你选。把GSC翻译结果按国家排序,那几个翻译流量大、转化又不差的语言市场,就是需求已经被真实用户验证过的优先级名单——能让人忍着机翻都要看下去甚至下单,需求强度最硬。照着这个名单从高到低做本地化,是风险最低、回报最高的顺序。
## 权威参考资料
## 出海独立站国际SEO怎么选域名结构?ccTLD、子目录还是子域名
- URL:https://zhangwenbao.com/international-seo-domain-structure-cctld-subdirectory-subdomain.html
- 分类:国际SEO
- 发布:2026-06-23 | 更新:2026-06-23
- 摘要:ccTLD、gTLD子目录还是子域名?这份国际站域名结构选型指南,读懂Google官方四结构对照表、ccTLD的注册门槛与PageRank稀释、open ccTLD的隐形坑,配决策树、平台落地与迁移代价,帮出海独立站一次选对不返工。
- 关键词:hreflang,国际SEO,出海建站
> **TLDR**:摘要:出海要进第二个国家,第一道绕不开的技术决策就是:内容放example.de、de.example.com还是example.com/de/。这道题被英文SEO圈讲了十几年,可大多数老教程漏掉了一个2026年才显出分量的变化——Google Search Console的国际定位报告在2022年就停用了,你再也没法手动给一个子目录指定国家。这等于抽走了子目录和子域名的一根拐杖,让三选一这笔账必须重算。这篇把三种结构的真实取舍(显式地理信号、权重归一还是稀释、维护成本)、Google官方那张对照表怎么读、open ccTLD的隐形坑、按出海阶段走的决策树,连同迁移代价和AI搜索时代的新权重,一次拆给你看,最后给一张能拿去和团队拍板的决策清单。
> 摘要:出海要进第二个国家,第一道绕不开的技术决策就是:内容放example.de、de.example.com还是example.com/de/。这道题被英文SEO圈讲了十几年,可大多数老教程漏掉了一个2026年才显出分量的变化——Google Search Console的国际定位报告在2022年就停用了,你再也没法手动给一个子目录指定国家。这等于抽走了子目录和子域名的一根拐杖,让三选一这笔账必须重算。这篇把三种结构的真实取舍(显式地理信号、权重归一还是稀释、维护成本)、Google官方那张对照表怎么读、open ccTLD的隐形坑、按出海阶段走的决策树,连同迁移代价和AI搜索时代的新权重,一次拆给你看,最后给一张能拿去和团队拍板的决策清单。
## 先分清:你纠结的到底是哪个问题?
很多人把这道题和另一道题搅在一起。一道是“我的博客该挂blog.example.com还是example.com/blog”,那是单站内部把一个板块放子域还是子目录的权重传导问题,和国家、语言没关系。另一道才是这篇要谈的:你要进德国、日本、法国这些新市场,整套本地化内容该用什么域名结构去承载。
两道题的判断逻辑差得很远。单站板块放哪,核心只看权重怎么流、爬虫怎么认归属,这部分在子域名还是子目录的权重传导那篇 (https://zhangwenbao.com/subdomain-vs-subdirectory-seo-link-equity-domain-authority-transfer-decision.html)里单独拆过。而国际站三选一,除了权重,还多压了三样东西:地理定位信号强不强、本地用户认不认你这个域名、多个站点的维护成本扛不扛得住。把这两道题分开,你才不会拿单站的结论去套国际场景,选出一个三年后想拆又拆不动的架构。
还有第三种容易混进来的情况:你卖同一种英语到美国、英国、澳大利亚,那不是结构选型,是同语言多地区怎么不自己跟自己打架的去重问题,逻辑另说。所以动手前先确认一句:你面对的是“多个市场、可能多种语言、要不要分开放”这个问题,才往下读。
## 三种结构到底长什么样
把选项摆清楚,一共就三种主流形态,加一种已经被淘汰的。
- ccTLD(国家代码顶级域):example.de、example.fr、example.jp。每个市场一个独立国家域名。
- gTLD + 子目录:example.com/de/、example.com/fr/。一个主域名下用文件夹分市场。
- gTLD + 子域名:de.example.com、fr.example.com。一个主域名下用子域分市场。
- URL参数:example.com?loc=de。Google在官方文档里直接标了“不推荐”,因为参数对用户和爬虫都讲不清地理归属,分享、收藏、抓取全是麻烦,这一种可以直接划掉。
这里先澄清一个常见误解:ccTLD指的是两个字母的国家代码域名。按维基百科的定义,所有两字母的顶级域都是ccTLD,所有ASCII的ccTLD标识也都是两个字母,比如 .de(德国)、.jp(日本)、.fr(法国)、.cn(中国)。这点后面谈open ccTLD的坑时还会回来咬你一口。
## Google官方那张对照表怎么读
不必凭感觉拍。Google在管理多区域和多语言网站的官方指南 (https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)里给了一张明确的优劣对照表,逐条读完你会发现,三种结构其实各管各的一段。
ccTLD那一栏,优点写的是“清晰的地理定位”“服务器位置无关紧要”“站点之间易于分隔”;缺点是“昂贵(可用性可能受限)”“需要更多基础设施”“有时受ccTLD注册要求约束”“只能定位单一国家”。子域名那一栏,优点是“易于搭建”“允许不同服务器位置”“站点之间易于分隔”;缺点是“用户可能无法仅从URL认出地理定位”。子目录那一栏,优点是“易于搭建”“低维护(同一主机)”;缺点同样是“用户可能无法仅从URL认出地理定位”,外加单一服务器位置的限制。
把这张表翻译成人话:ccTLD用清晰的地理信号和站点隔离,换来了高成本和“一个域名只能管一个国家”的天花板;子目录用低维护和权重归一,换来了地理信号偏弱;子域名夹在中间,搭起来比ccTLD轻、又能放不同服务器,但和子目录一样,光看URL用户认不出这是哪国站。没有哪一栏是全优,这就是为什么这道题吵了十几年还没盖棺。
## 被大多数教程漏掉的2022年变化
现在说这篇最想让你记住的一件事。过去很多英文教程会教你:用了gTLD + 子目录或子域名也不怕,去Search Console的国际定位报告里,手动给这个子目录指定一个目标国家就行。这条建议在2026年已经是错的。
Google在 国际定位报告停用的官方说明 (https://support.google.com/webmasters/answer/12474899)里讲得很直接:这个报告已经停用,过去那个“通过Search Console把搜索结果定位到特定国家”的能力,被判定“对生态系统价值不大,不再受支持”。这个停用从2022年9月就生效了。换句话说,你今天再去后台,找不到那个能给子目录手动设国家的开关了。
这件事的分量在于:它抽走了子目录和子域名的一根拐杖。以前子目录地理信号弱不要紧,可以去后台补一刀手动定位;现在这一刀没了,Google只能从ccTLD、hreflang、服务器位置、页面内容这些信号里自己推断你在打哪个市场。在这套新逻辑下,ccTLD成了唯一一个不靠任何额外配置、光凭域名本身就能喊出“我就是德国站”的显式国家信号。子目录想表达同样的意思,得靠hreflang加本地化内容一点点把信号攒出来。这不是说子目录就输了——后面会讲它为什么仍是多数人的默认答案——而是说,凡是还在拿“反正能去后台设国家”当理由的老教程,它的账本已经过期了,得重算。
## 三选一的真实取舍:三笔账
剥掉术语,三种结构的差别落到三笔账上,你只要对着自己的盘子算这三笔,答案就浮出来了。
第一笔,显式地理信号。ccTLD最强,域名本身就是国家声明;子域名和子目录都弱,得靠hreflang和内容补。前面说了,手动地理定位这条退路2022年关掉之后,这笔账里ccTLD的相对优势其实被放大了。
第二笔,权重是归一还是稀释。这笔ccTLD最吃亏。Ahrefs在它的国际SEO指南 (https://ahrefs.com/blog/international-seo/)里把话挑明了:用ccTLD等于把内容拆到好几个域名上稀释你的PageRank,你得在多个域名上分别从零积累SEO权威,而不是把外链和权重全攒在一个更强的主域上。子目录正相反,所有市场的内容都挂在同一个主域下,外链权重全归一,新开一个市场能直接吃到主域已有的家底。子域名介于两者之间,搜索引擎倾向于把子域当相对独立的站看待,归一程度不如子目录。
第三笔,维护成本。ccTLD最重——多个域名意味着多套基础设施、多份证书、内容和设计改动要在多个站之间复制,Ahrefs直接说维护多个域名“在技术上会很有挑战”。子目录最轻,同一主机、同一套部署,Google官方也把“低维护”写进了它的优点栏。子域名又夹在中间。
三笔账连起来看:ccTLD是用钱和人力,买最强的地理信号和最干净的站点隔离;子目录是用偏弱的地理信号,换最低的成本和最快的权重复利;子域名是个折中件,技术上有隔离需求时才显出价值。Search Engine Land在它的国际SEO指南 (https://searchengineland.com/guide/international-seo-basics-structure-hreflang-common-mistakes)里那句话说得实在:“没有完美的结构,你的结构必须匹配团队资源、本地化需求和长期SEO策略。”
## ccTLD什么时候值得
别被“稀释权重”吓退,ccTLD在对的场景里是别的结构换不来的。它适合这几种情况。
一是单国深耕、要本地信任拉满。德国买家看到 .de域名,天然觉得这是给他们的本地店,转化信任比一个example.com/de/ 高一截,尤其是高客单、决策周期长的品类。二是有法规或支付的本地化硬要求,某些行业在某些国家做生意,本地域名几乎是入场券。三是你打算把每个市场都当成独立业务长期养,团队、预算、内容都配得齐,那ccTLD的站点隔离反而是优点——一个站出问题不连累别的站。
但ccTLD有个容易被忽略的硬约束:注册门槛。维基百科列得很清楚,不少ccTLD有本地存在要求,.de需要一个德国邮政地址,.jp要求在日本有实际地址,.ca有所谓的“加拿大存在要求”。也就是说,不是你想注就能注,进某些市场前得先解决一个本地实体或地址的问题。这道门槛本身,有时就替你把“要不要上ccTLD”这道题答了一半。
## 子目录为什么是多数出海团队的默认答案
如果你让保哥给一个还在多市场扩张早期、团队不大的出海独立站一句话建议,那就是:没有强理由就先用gTLD + 子目录。这不是偷懒,是几股力量叠出来的结论。
权重归一是最大的那股。新开一个市场目录,能直接继承主域多年攒下的外链家底,起步比从零养一个新域名快得多。维护最轻是第二股,同一套主机、同一套部署、改一处设计全站生效。Ahrefs那篇指南的作者也把话说白了:“从零开始时,我个人偏好子目录方案……把所有内容放在同一个域名下的好处不该被低估。”Search Engine Land更直接:“对大多数企业来说,子目录是最SEO友好的选项。”
子目录唯一明显的短板是地理信号弱,而这正好用hreflang来补。结构定下来之后,hreflang怎么落地、怎么维护是另一摊活,多语言大站手写到吐血的,可以看保哥写的用脚本从爬虫结果自动生成hreflang sitemap (https://zhangwenbao.com/ai-script-hreflang-xml-sitemap-multilingual.html)那套办法。一句话,子目录把“信号弱”这个短板交给hreflang去填,自己专心吃权重归一和低维护这两个最实在的好处。
## 子域名什么时候才轮到它
子域名不是用来当默认选项的,它是用来解决特定技术约束的。什么时候该想到它?当你不同市场必须放在不同服务器位置、或者不同市场跑在不同的CMS和技术栈上、再或者某个市场出于合规要和主站做物理隔离——这些时候,子域名“允许不同服务器位置”“站点之间易于分隔”的特性才真正派上用场。
Semrush在它的国际SEO指南 (https://www.semrush.com/blog/international-seo/)里也是这么定位子域名的:最适合托管在多个不同地点服务器上的网站,比子目录更适合需要技术隔离的场景,代价是用户可能一时分不清这个子域到底指国家还是语言。如果你没有上面那些硬约束,单纯为了“看起来分得清”就上子域名,多半是给自己平白添了一层权重不那么归一的复杂度。
## 别忽略抓取和收录这一层差别
三种结构在Google怎么抓、怎么收上也不一样,这层差别在站大了之后会被放大。
子目录把所有市场的页面挂在同一个主域下,Google对这个域的抓取预算是统一分配的,整站更容易被充分抓取和索引,新开的市场目录能蹭到主域已经建立起来的抓取信任。ccTLD正相反,每个国家域名都是一个独立站点,抓取预算各算各的,一个刚注册、外链稀薄的新国家域名,Google分给它的抓取频次天然就低,收录爬坡比挂在强主域下慢得多。子域名同样会被当作相对独立的实体来分配抓取资源,归一程度夹在两者中间。
这层差别的实际后果是:用ccTLD铺多国,你不只是要分头建外链,还得分头操心每个域名的收录健康度。对内容量大、上新频繁的电商尤其要命——几千个商品页摊在好几个弱域名上,被充分收录的难度成倍上升。这也是为什么早期团队用子目录起步,连收录这一关都省心不少:一个强主域被抓透,远比三五个弱域名各自爬坡来得划算。
## open ccTLD的隐形坑:.io、.ai、.co
这里埋着一个特别容易踩的坑,尤其是科技和AI出海团队。有些ccTLD早就被全世界当通用域名在用了。维基百科的ccTLD词条 (https://en.wikipedia.org/wiki/Country_code_top-level_domain)把这种情况说得很明白:.io(本是英属印度洋领地)被科技公司、初创和Web应用“非官方地”广泛使用,.ai(本是安圭拉)被AI公司“非官方地”拿来用,.co(本是哥伦比亚)干脆“作为全球域名推广,任何人都能注册”,.tv(图瓦卢)被当成电视的缩写在用。
坑在哪?你以为你注了个酷炫的 .ai域名,可它骨子里仍是安圭拉的国家代码顶级域。Google对这类被广泛通用化的ccTLD大多不再当成地理信号来处理,但你也别指望它能像 .com那样被干净地当成中性gTLD——这是一片灰色地带。结果就是:你既没拿到ccTLD那份“清晰地理定位”的好处,又给自己未来要做多国地理定位时埋了一层说不清的隐患。如果你的主域就是个open ccTLD,那做国际化时,老老实实走子目录 + hreflang往往比纠结这个域名的国家属性更省心。
## 语言不等于地区:ccTLD讲不清语言
三选一这道题里还藏着一个维度,很多人选完结构才发现没考虑:域名结构能表达地区,却表达不了语言。
Ahrefs点了一个典型例子:.ca这个加拿大域名,到底是给说英语的还是说法语的加拿大人?光看域名说不清。同理,一个example.com/ch/ 的瑞士目录,里面可能要同时伺候德语、法语、意大利语三拨人。这说明无论你最后选了哪种结构,地区只是一半,语言是另一半,把两半拼起来的活,得交给hreflang。
所以正确的心智模型是:先用域名结构解决“分给哪些地区”,再用hreflang解决“每个地区里的语言版本怎么互相指认”。Search Engine Land提醒的那个细节值得抄下来——hreflang用的是ISO语言码加可选的ISO国家码,是en-GB不是en-UK,写错了整条hreflang就废了。结构和hreflang是配套的两件事,不是二选一。
## 一张能拿去拍板的决策树
把上面的取舍收敛成可操作的判断顺序,你对着走一遍基本就有答案了。
- 第一问:你现在要进几个市场?只进一个、且要本地信任拉满、又能搞定本地注册门槛——优先考虑ccTLD。要进多个、还在扩张早期——先排除ccTLD,往子目录和子域名走。
- 第二问:你有没有技术隔离的硬约束?不同市场必须放不同服务器、不同CMS、或要物理隔离——子域名。没有这类约束——子目录。
- 第三问:你的团队和预算扛得住几套站?扛不住多套基础设施和多份内容复制——别碰ccTLD,子目录的低维护是给你这种盘子准备的。
- 第四问:你的主域是不是open ccTLD?是 .io / .ai / .co这类——做国际化时优先子目录 + hreflang,别在这个域名的国家属性上较劲。
大多数还在多市场扩张、团队不算大的出海独立站,四问走下来会落在“gTLD + 子目录 + hreflang”这个组合上。这不是巧合,是成本、权重、信号三笔账在当前这套规则下的自然解。等某个市场真的养成了独立业务、值得单独深耕了,再把那一个市场单拎出来上ccTLD,也来得及。
## 选定之后第一步:hreflang和URL落地
结构拍板只是开头。不管你选了哪种,紧接着要把hreflang织对:每个语言地区版本都要在hreflang里列出所有其他版本,包括它自己(自引用),再加一条x-default兜住没匹配上的访客。URL上,子目录就用清晰的 /de/、/fr/ 这样的语言或地区段,别用看不懂的参数;ccTLD之间则要靠hreflang互相指认,否则Google会把你几个国家域名当成互不相干的站。
有一个反复出现的翻车点:同一种语言卖到多个地区,比如英语同时上美、英、澳,内容高度雷同,很容易被判成自我重复,hreflang没配对还会互相抢排名。这一块的去重和地区指认怎么做,保哥在同语言多地区站怎么不自己跟自己打架 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html)那篇里专门拆过,结构选完顺手把这关过了,能省掉一大批后期排查。
## 服务器位置还重要吗
顺带回答一个老问题。过去服务器放在目标国家被当成一个地理信号,现在它的权重已经很低了。Search Engine Land的说法是服务器位置“今天不那么重要了,但仍是一个次要因素”。Google官方在ccTLD那栏甚至直接写“服务器位置无关紧要”。
实操上的取舍是:你不必为了SEO信号专门把服务器搬到目标国家,但本地或就近的服务器、配合CDN,能实打实压低目标市场的页面加载时间,而加载速度本身是体验信号。所以这件事今天更该当成性能优化来做,而不是当成地理定位的主力手段。
## 选定之后,怎么确认地理定位真的生效了
结构上线不等于信号生效,得有办法回头验证。给你三个实操检查点。
第一个看Search Console的效果报表。手动设国家的开关虽然没了,但效果报表里仍能按国家维度拆流量来源——你打德国市场的那个目录,德国本地的展示和点击有没有起来,一拉就知道。如果某个市场的页面在它的目标国家几乎拿不到展示,多半是地理信号没传对,回去查hreflang和本地化内容够不够。
第二个测hreflang本身。用hreflang测试工具或爬虫整站跑一遍,确认每个语言地区版本都列全了所有兄弟版本、都做了自引用、x-default也在,没有单向指认或断链。hreflang是子目录和子域名补地理信号的主力,它一配错,整套结构的地理表达就瘸了。
第三个用site: 抽查各市场的收录。分别对每个目录或域名做site: 查询,看Google到底收了多少页、有没有把不该收的本地化重复版也收了进来。ccTLD结构尤其要查,因为几个域名是分开被抓取和收录的,很容易出现某个市场域名收录严重不足却一直没人发现的情况。
## 平台落地:Shopify、WordPress和自建站
不同平台给你的结构选择不一样,得照着平台的牌面打。
Shopify这边,扩市场主要靠Markets和多店铺两条路,前者倾向把不同市场做成同一店铺下的子目录或子域,后者是开独立店铺、更接近ccTLD那种隔离思路,怎么选要算SEO架构这笔账。WordPress多语言主要靠Polylang、WPML这类插件,默认多是子目录结构,想上ccTLD得配多站点或多个独立安装,维护陡然变重。完全自建的独立站最自由,三种结构都能实现,但也意味着hreflang、canonical、sitemap这些全得自己织对,自由度和工作量是一体两面。
不管哪个平台,原则不变:先用前面那张决策树定下“该用哪种结构”,再去看你的平台能不能、要花多大代价实现它。别反过来被平台默认值牵着走,稀里糊涂上了一个不适合自己阶段的结构。
## 为什么“现在选错以后改”很贵
有人想,先随便选一个,以后不合适再改呗。这个想法低估了迁移的代价。
从子目录或子域名之间互相搬,相对还好,本质是站内URL调整加301重定向。但凡是涉及ccTLD的迁移——比如你一开始上了好几个ccTLD,后来想合回一个主域的子目录——那等于一次完整的域名迁移,每个国家域名上多年攒的外链权重,都要靠301一点点往新结构上引,过程中排名波动几乎免不了,恢复要按月计。反过来从子目录拆成ccTLD,则是把已经归一的权重重新打散,新域名要从头积累信任。
这就是为什么结构选型值得在动手前多花一天想清楚:它不是个能随手改的设置,更像地基。地基浇错了再砸,砸的是你之前所有内容和外链的积累。宁可前期多算两笔账,也别让一个三年后想拆的结构把团队拖住。
## AI搜索时代,国际站结构的新权重
这道老题在AI搜索时代多了一层考量。AI概览和各类AI搜索,是从已经被索引的网页里召回内容、再揉成一段答案。这意味着两件事。
一是收录和权重归一更值钱了。子目录把权重攒在一个强主域上,整站更容易被充分抓取和索引,被AI召回的底盘也更厚;ccTLD把权重打散到多个弱域名上,每个域名单独被AI充分覆盖的难度都更大。二是跨市场的实体一致性更要命。当你的品牌在不同市场用不同结构、不同内容讲自己时,很容易给AI喂进互相矛盾的信号,造成跨市场的知识污染。这个新风险,hreflang这种页面级标签已经挡不住了,保哥在AI时代为什么hreflang挡不住跨市场知识污染 (https://zhangwenbao.com/international-seo-global-knowledge-integrity-cross-market-ai.html)那篇里专门展开过。结论很朴素:结构越清晰、权重越归一、跨市场叙事越一致,你的国际站在AI搜索里就越站得住。
## 一个外贸独立站的真实走法
说个手边的切片。一个做户外储能的出海客户,早期一上来就想给欧洲几个主要市场各注一个ccTLD,图的是本地信任。算账时拦了下来:团队当时只有两个人能管内容,几个独立域名意味着每次改产品页要复制好几遍,外链也得分头去建,权重摊得稀薄。
最后的走法是:先用example.com主域下的子目录把德、法、西几个市场铺开,每个市场配齐hreflang和本地化内容,让它们共享主域已有的外链家底。跑了大半年,德国市场的搜索需求和转化明显跑在前面,本地大客户也开始进来,这时才单独给德国上了 .de域名,把那一个市场升级成独立深耕,其余市场继续留在子目录里。升级时把原来example.com/de/ 的内容整体301到 .de,再把两边的hreflang重新织过,让新域名稳稳接住原目录攒下的权重,这一步走得很小心,德国市场的排名只短暂波动了两三周就回来了。这个“多市场先子目录起步、单一市场养熟了再上ccTLD”的节奏,让团队既没在早期被多套站拖垮,又在该重投的市场拿到了ccTLD的本地信任。结构不是一次定死的,是跟着业务阶段走的。
## 5个最常见的误区
误区一:ccTLD一定比子目录排名好。不存在普适的更好,ccTLD强在地理信号,弱在权重稀释和维护,对早期小团队往往是负担不是助力。
误区二:用了子目录就去后台给它设国家。这个功能2022年就停用了,现在只能靠ccTLD、hreflang、内容这些信号让Google自己推断。
误区三:结构选好就完事了。结构只解决地区,语言还得靠hreflang,两件事配套做才完整。
误区四:.io、.ai这类酷域名能当中性gTLD用。它们骨子里是ccTLD,处于灰色地带,做国际化时别指望它给你干净的地理中立。
误区五:现在选错以后随时能改。涉及ccTLD的迁移等于域名迁移级的风险,排名恢复按月计,结构更像地基不像设置。
## 常见问题解答
## ccTLD、子目录、子域名到底哪个SEO最好?
没有绝对最好的。Google官方明确这三种都能用,差别在取舍:ccTLD地理信号最强但稀释权重、维护最重;子目录权重归一、维护最轻、最适合大多数出海团队;子域名适合有服务器或技术隔离硬需求的场景。Search Engine Land的结论是对大多数企业来说子目录最SEO友好。
## 为什么不能在Search Console里给子目录设国家了?
Google的国际定位报告从2022年9月起停用,官方说这个手动国家定位“对生态系统价值不大,不再受支持”。现在Google改从ccTLD、hreflang、服务器位置和页面内容自行推断地理相关性,但仍继续支持hreflang标签。
## 我的主域是 .io或 .ai,做国际化会有问题吗?
这类是被广泛通用化的open ccTLD,骨子里仍是国家代码域名,处在灰色地带:既拿不到ccTLD清晰的地理定位,也不完全等同中性的 .com。做多国地理定位时,建议走子目录加hreflang,别在这个域名的国家属性上较劲。
## 选了结构之后还必须做hreflang吗?
必须。域名结构只能表达地区,表达不了语言,同一个地区里可能有多种语言版本。hreflang负责让各语言地区版本互相指认,注意用ISO码、是en-GB不是en-UK,每个版本都要自引用并配x-default。
## 服务器放在目标国家对SEO还有用吗?
作用已经很小了,今天只是个次要因素,Google在ccTLD场景甚至直接说服务器位置无关紧要。更实在的做法是把它当性能优化:就近服务器加CDN压低目标市场的加载时间,而速度本身是体验信号。
## 出海早期到底先用哪种结构最稳?
多市场扩张早期、团队不大的情况,优先gTLD + 子目录 + hreflang:权重归一、维护最轻、起步快。等某个市场养成独立业务、值得深耕了,再把它单独升级成ccTLD,比一开始就铺一堆国家域名稳得多。
## hreflang标签怎么落地?return tags对称与x-default实操避坑
- URL:https://zhangwenbao.com/hreflang-implementation-return-tags-x-default-canonical-mistakes.html
- 分类:国际SEO
- 发布:2026-06-22 | 更新:2026-06-22
- 摘要:国际定位报告2022年下线后hreflang等于裸奔,写错了没有官方仪表盘提醒。这份hreflang实施指南讲透HTML头/XML sitemap/HTTP头三种放置法、return tags对称、x-default正确指向、ISO语言地区代码、canonical自指对齐五大关键点,配10步落地清单与5个最常踩的坑。
- 关键词:技术SEO,hreflang,国际SEO,x-default,多语言站
> **TLDR**:摘要:hreflang不是写几行标签那么简单,它是一张需要每个语言版本互相对上号的网,断一根线整组失效。这篇把实施拆成可执行的几步:三种放置方式怎么选、self-referential自指为什么不能省、return tags对称为什么是头号死穴、x-default到底该指向语言选择器还是英文版、en-GB和en-UK差一个字母就报废、canonical和hreflang自指对齐的致命冲突。更要紧的是一个被很多老教程忽略的现实:2022年9月之后,Google Search Console的国际定位报告没了,hreflang等于在裸奔,写错了不再有官方仪表盘提醒你,只能靠自己的爬虫和手动抽查兜底。文末给一张10步落地清单和5个最常踩的坑。
> 摘要:hreflang不是写几行标签那么简单,它是一张需要每个语言版本互相对上号的网,断一根线整组失效。这篇把实施拆成可执行的几步:三种放置方式怎么选、self-referential自指为什么不能省、return tags对称为什么是头号死穴、x-default到底该指向语言选择器还是英文版、en-GB和en-UK差一个字母就报废、canonical和hreflang自指对齐的致命冲突。更要紧的是一个被很多老教程忽略的现实:2022年9月之后,Google Search Console的国际定位报告没了,hreflang等于在裸奔,写错了不再有官方仪表盘提醒你,只能靠自己的爬虫和手动抽查兜底。文末给一张10步落地清单和5个最常踩的坑。
## 一个被悄悄废弃的报告,让hreflang开始裸奔
先说一件很多人没注意、但直接影响实施策略的事。2022年9月22日,Google把用了八年的国际定位报告(International Targeting report)从Search Console里下线了。这个报告原本有两个作用:一个是给整站设国家定位,另一个是监控你的hreflang用得对不对、有没有报错。前一个功能Google说对生态价值不大直接砍掉,后一个监控hreflang错误的能力,也随着报告一起消失了。
这意味着什么?过去你hreflang写错了——比如某一组少了一条返回链接——Google会在那个报告里给你标出来,你照着改就行。现在没有这个仪表盘了。你写对写错,线上不会再有一个官方界面告诉你。Google在国际定位报告废弃的官方公告 (https://support.google.com/webmasters/answer/12474899)里也明确:会继续支持hreflang,但不再提供这个监控入口。
很多英文老教程到今天还在教你“实施完去Search Console的国际定位报告看有没有错”,这个步骤已经失效好几年了。结论很现实:hreflang现在是裸奔状态,写错了没人提醒,所以你必须一次落地就对、对称、能自检。这篇就按这个标准来拆。
## 先分清:hreflang管什么,不管什么
hreflang是一个HTML属性,2011年由Google引入,用来告诉搜索引擎“同一份内容,我有这几个语言或地区的版本,请按用户的语言地区给他匹配那一版”。按维基百科hreflang词条 (https://en.wikipedia.org/wiki/Hreflang)的定义,它帮搜索引擎理解网站的语言和地理定向,并在搜索结果里展示正确的URL。
关键是要破除两个常见误解。第一,hreflang不是排名因素,它不会让你的页面排得更高,它只决定“在已经要展示你的情况下,展示哪个语言版本”。第二,hreflang不传递权重,它不是canonical的替代品。A页面挂了指向B的hreflang,不代表A把权重让给了B,两个页面各自独立竞争,hreflang只是给它们贴了“互为等价版本”的标签。
所以hreflang解决的是一类很具体的痛点:你有美国英语站和英国英语站,内容几乎一样,Google容易判成重复、只收一个,或者把美国版展示给英国用户。这种同语言多地区互相打架的场景,正是hreflang的主战场,保哥在同语言多地区站怎么不自己跟自己打架 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html)那篇里专门拆过这个去重逻辑。但前提是hreflang本身得织对,织错了反而帮倒忙。
## 三种放置方式,按站点规模选
Google在本地化版本的官方说明文档 (https://developers.google.com/search/docs/specialty/international/localized-versions)里给了三种放置hreflang的方式,三种等价、不能混用同一组、各有适用场景。
第一种,HTML head里的link标签。在每个页面的 里,为每个语言地区版本放一条link,再加一条指向自己的。写法长这样:
这是最直观的方式,适合页面数量不大的站。缺点是每多一个语言版本,每个页面的head就多一行,10个语言就是每页10行,几千个页面乘起来体积可观,而且任何一处改动都要动HTML模板。
第二种,XML sitemap里的xhtml:link条目。把hreflang写进sitemap,每个URL节点下挂上所有语言版本的xhtml:link。这是大站的首选,因为它把hreflang从页面HTML里抽出来集中管理,改一处就行,不用动模板,也不增加页面体积。代价是sitemap文件会变得很大,需要工程化生成。
第三种,HTTP响应头里的Link字段。这是给非HTML文件用的,比如PDF。PDF没有head可写link,就只能在服务器返回PDF时,在HTTP头里带上hreflang信息。普通网页几乎用不到这种。
选哪种?小站用HTML head法直观好维护;几万页以上的大站,几乎只能走sitemap法,否则维护成本爆炸。Ahrefs在它的hreflang指南里也持同样看法,认为sitemap法对规模化站点更省心。
## self-referential:每个页面必须先指向自己
这是初学者最容易漏的一条。每个页面的hreflang集合里,除了列出所有兄弟版本,还必须包含一条指向自己的。Google的原话是“每个语言版本必须列出自己以及所有其他语言版本”。
为什么自指不能省?因为hreflang是一组互相引用的集合,Google需要确认这个集合里每个成员都认同自己是成员之一。少了自指,这一组的引用关系就不完整,Google可能直接忽略整组标签。维基百科的措辞更直接:每个URL都必须引用完整的URL集合,自指是必需的,包含标签的这个文档本身永远是集合的一部分。
实操上记一个动作:写hreflang时,先写指向自己的那一条,再写指向兄弟版本的。把自指放在第一行当成肌肉记忆,就不容易漏。
## return tags对称:最常见也最致命的死穴
如果说hreflang只有一个头号坑,那就是返回链接(return tags)不对称。规则极其刚性:如果A页面指向了B,那么B页面必须也指回A。两边只要有一边没指回去,Google就会把这一对标签全部丢弃——不是丢一条,是两边都失效。
Google的判定逻辑是这样的:Googlebot抓到一个带hreflang的页面后,会顺着它列的每个URL去抓,逐一核对对方有没有反向指回来。对上了才认,对不上整组作废。Ahrefs在它的hreflang实战指南 (https://ahrefs.com/blog/hreflang/)里把这一条列为最高频错误:返回链接缺失,Google直接放弃整组注解。
为什么这么容易错?因为现实里语言版本不是一次性建好的。你先有美国站和英国站,互相指对了;过半年加了澳大利亚站,你在美国站和英国站上加了指向澳洲的,却忘了在澳洲站上回指美国和英国——这一组立刻断网。语言版本越多、上线时间越分散,断线概率越高。这也是为什么大站宁可用sitemap集中管理,一个脚本统一吐出全集,对称性由程序保证,而不是靠人手一处处改。在用AI写脚本从爬虫结果自动生成hreflang sitemap (https://zhangwenbao.com/ai-script-hreflang-xml-sitemap-multilingual.html)那篇里给过完整的自动化方案,核心就是把对称性这件事交给机器,别交给记性。
## x-default到底指向哪,别再当成“默认语言”
x-default是被误解最深的一个值。很多人以为它是“默认语言版本”,把它指向英文版就完事——这只对了一半。
x-default的准确含义是:当用户的语言地区跟你列的所有版本都匹配不上时,给他展示哪一页。它是兜底页,不是默认语言页。最理想的指向对象是你的语言选择器页面——就是那种让用户自己选国家/语言的着陆页。如果没有语言选择器,再退而求其次指向你的主版本(通常是英文版)。
Yoast在它的hreflang终极指南 (https://yoast.com/hreflang-ultimate-guide/)里把这层说得很清楚:x-default指定的是当其他hreflang链接里的语言都不匹配用户浏览器设置时,该把用户送到哪里。换句话说,假设一个用户的浏览器是阿拉伯语,而你只有中英法三个版本,没有x-default的话Google就自己拍脑袋给他塞一个,有了x-default你就能主动决定他落到语言选择器、自己挑。
两个实操要点。第一,x-default整组里只用一次,不是每个版本都写。第二,没设x-default不会报错,但等于把“匹配不上时展示谁”的决定权交给Google,对多语言站来说这是个不该放弃的控制权。
## 语言地区代码:en-GB不是en-UK,差一个字母就报废
hreflang的值由两部分组成:语言代码(ISO 639-1格式)加上可选的地区代码(ISO 3166-1 Alpha 2格式),中间用连字符连。语言在前、地区在后,这个顺序不能颠倒。
最经典的错误是把英国写成en-UK。正确写法是en-GB——因为ISO 3166-1里英国的国家代码是GB(Great Britain),不是UK。Yoast指出这是个普遍问题,好在Google对en-uk这种常见错还能容错纠正,但有些错它救不了,比如en-EU,因为EU(欧盟)根本不是一个ISO国家代码,这种会直接整条失效。
再记几个容易混的:
- 只标语言不标地区是允许的,比如 hreflang="en" 表示所有英语用户,hreflang="zh" 表示所有中文用户。
- 同语言多地区才需要带地区码,比如en-US、en-GB、en-AU三个英语版本要区分。
- 中文要小心:简体常写zh-Hans或zh-CN,繁体写zh-Hant或zh-TW,别只写zh然后指望Google自己分简繁。
- 大小写不敏感,en-us和en-US等价,但团队内部最好统一成“语言小写、地区大写”的写法,方便人眼核对。
这种字母级的错最阴,因为页面看起来一切正常,标签也在,只是悄悄没生效。这正好呼应前面那个点:国际定位报告没了,这类错误现在不会主动跳出来提醒你。
## 绝对URL与协议一致,别用相对路径
Google的要求是hreflang里的URL必须是完全限定的,包含传输协议。也就是说要写 https://example.com/foo,不能写 //example.com/foo,更不能写 /foo 这种相对路径。相对路径Google不认。
顺带还有几个一致性要求:协议要统一,全站HTTPS就别在hreflang里混进HTTP的版本;带不带www、带不带末尾斜杠也要跟你页面实际可访问的URL完全一致,hreflang指向的URL最好是能直接返回200的终态地址,别指向一个会301跳转的中间URL,跳转会削弱信号。
## canonical与hreflang自指对齐:最致命的隐形冲突
这是高阶坑,也是最容易让整套hreflang默默失效的一个。规则是:每个被hreflang引用的页面,它的canonical必须指向自己(self-canonical)。
想象一个常见的错误配置:你有en-US和en-GB两个版本,hreflang织得很对称,但你为了“防止重复内容”,把en-GB页面的canonical指向了en-US。结果是灾难性的——Google看到canonical说“en-GB的规范版本是en-US”,就会跟随canonical、忽略en-GB这个页面,连带把它身上的hreflang一起无视掉。你以为自己同时做了canonical去重和hreflang定向,实际上canonical把hreflang整个掀翻了。
正确做法:每个语言版本各自canonical到自己,让hreflang去负责“告诉Google这几个是等价的不同语言版本”。canonical管“同一语言内的重复”,hreflang管“跨语言的等价”,两者分工,绝不能让canonical跨语言指。如果你对canonical和noindex、跨页面的配合还拿不准,可以先把canonical这块的判断逻辑理顺再来碰hreflang。
## hreflang不是排名魔法,它是“等价提示”
再强调一遍这个心态,因为它影响你怎么排实施优先级。hreflang不会提升排名,它只在Google已经决定展示你的前提下,帮你把对的语言版本送到对的用户面前。它的价值是体验和转化层面的——一个英国用户搜到你,看到的是带英镑价格、英式拼写的英国版,而不是美元美式拼写的美国版,跳出率会更低、转化会更顺。
所以别指望靠hreflang救一个排不上去的站。它是国际化做对之后的临门一脚,前面的域名结构、内容质量、链接建设都得先到位。选哪种域名结构本身就是国际站的第一道分叉题,保哥在国际站域名结构三选一 (https://zhangwenbao.com/international-seo-domain-structure-cctld-subdirectory-subdomain.html)那篇里专门算过ccTLD、子目录、子域名的三笔账,hreflang是在你选好结构之后才上场的。
## 国际定位报告废弃后,怎么自查hreflang
回到开头那个现实:没有官方仪表盘了,自检只能靠自己。给一套可落地的三层验证法。
第一层,爬虫工具批量扫。用Screaming Frog、Sitebliss这类爬虫跑全站,它们能批量提取每个页面的hreflang,自动检出返回链接缺失、自指缺失、无效语言代码这三类高频错。这是替代国际定位报告的主力手段,大站基本只能靠它。Semrush在它的hreflang指南 (https://www.semrush.com/blog/hreflang/)里也建议用站点审计工具定期扫hreflang一致性,把它当成常规体检项。
第二层,手动抽查关键页。对首页、主要分类页、爆款产品页这种高价值页面,直接看源码或用浏览器插件核对hreflang。重点查三样:自指在不在、return tags两边对不对得上、x-default指向对不对。抽查不求全,求覆盖最重要的几个页面模板。
第三层,看日志和收录情况。翻服务器日志看Googlebot有没有正常抓取各语言版本,再用site: 在Google搜各语言版本的URL看收没收录、展示给目标地区的对不对。GSC的效果报表虽然没了国际定位,但还能按国家维度看各市场的曝光点击,间接判断hreflang有没有把对的版本送到对的市场。
把这三层做成每月一次的固定动作,就能补上官方报告留下的空缺。错误不会自己跳出来,你得主动去捞。
## hreflang多久才生效?上线后展示飘忽别急着改
很多人hreflang一上线就盯着搜索结果看,发现各语言版本展示忽隐忽现,以为没生效又开始乱改——这恰恰是最该忍住手的时候。
hreflang的生效是渐进的,不是上线即刻全网认账。Google要先重新抓取这一组里的每一个语言版本,再逐一核对返回链接对不对得上,全部对上了才会按hreflang去匹配展示。这个过程取决于各版本被重新抓取的速度,小站可能几天,大站或抓取频率低的站可能要两三周。在这段窗口里,有的版本已经被重新抓取认了、有的还没轮到,展示飘忽是正常现象,不是写错了。
所以上线后给它一点时间,别在没看清错误的情况下反复改标签。每改一次,Google就要重新走一遍抓取核对的流程,越改生效越慢。正确的节奏是:上线前用爬虫工具把对称性、自指、代码格式这些静态错误一次性扫干净,上线后只观察不动手,等两三周稳定下来再判断要不要调整。真要动,也是基于爬虫扫出的明确错误去动,而不是凭搜索结果一时的表现拍脑袋。
## 几万条hreflang的大站怎么维护
页面一多,hreflang就从“写几行标签”变成“工程问题”。手写绝对不可行——10个语言、5000个页面,就是5万条hreflang关系,任何一处人工改动都可能打破对称性。
大站的标准解法是把hreflang抽进XML sitemap,用程序统一生成。流程大致是:先爬一遍全站,建立“同一份内容对应哪几个语言URL”的映射表;再用脚本按这张表批量吐出带xhtml:link的sitemap,对称性和自指由程序保证;内容有增删时增量更新映射表、重新生成。这样人只维护那张映射表,具体的hreflang关系交给机器织。
这套自动化的好处是把最容易出错的对称性问题彻底消灭——只要映射表对,生成出来的hreflang天然对称、天然自指。具体的脚本实现和爬虫到sitemap的串接,前面提到的那篇自动生成方案里有完整代码思路,这里不重复。
## 从head法迁到sitemap法,别让两套实现打架
站点长大后,常会想把hreflang从HTML head法迁到sitemap法集中管理。迁移本身没问题,但有个隐蔽的坑:别让两套实现同时存在、还互相矛盾。
如果你head里还留着一组旧的hreflang,sitemap里又生成了一组新的,两组只要有出入——比如旧head里某个版本的URL带末尾斜杠、新sitemap里不带——Google收到的就是互相打架的信号,可能两套都不认。正确做法是迁移时一刀切:要么彻底清掉head里的hreflang只留sitemap一套,要么反过来,绝不让两套并存。
迁移完照例用爬虫全站扫一遍,确认head里的旧hreflang已经清干净、sitemap里的新hreflang对称自指都齐。这一步别省,并存的残留是迁移后最隐蔽的故障源,偏偏又没有官方报告替你盯着。
## AI搜索时代,hreflang还重要吗
有人问,都AI搜索了,用户问AI、AI给答案,还需要hreflang吗?需要,而且逻辑变了。
传统搜索里hreflang决定“展示哪个URL给哪个地区”。AI搜索里,模型是整块理解你的内容、再生成答案,它不是简单地选一个URL展示。这时hreflang的作用更偏向帮模型理清“这几个URL是同一内容的不同语言版本,不是各自独立的重复内容”,避免模型把你的多语言版本误判成互相矛盾或重复的来源。
更深一层的风险是跨市场的知识一致性——你在德国说的和在美国说的如果对不上,AI可能把矛盾信息混在一起污染你的品牌表述。这块单独成题,保哥在国际SEO进入AI时代 (https://zhangwenbao.com/international-seo-global-knowledge-integrity-cross-market-ai.html)那篇里专门拆过跨市场知识污染,这里点到为止:hreflang在AI时代不是没用了,而是从“选URL”升级成了“帮模型对齐多语言实体”的基础信号,该织还得织对。
## 真实案例:三市场hreflang织错网,两周掉量
保哥手上一个做户外储能电源的出海客户,主攻北美和欧洲,先后上了美国(en-US)、英国(en-GB)、德国(de-DE)三个站。前两个站上线时hreflang对称织好,收录和展示都正常。问题出在德国站后补的时候。
技术同事在德国站加了指向美英两站的hreflang,但没在美国站和英国站上回指德国站——经典的返回链接不对称。更糟的是,为了“防重复”,他把德国站里几个产品页的canonical指向了对应的英国站页面。两个错叠在一起:return tags断了一半,canonical又跨语言乱指。
后果是德国站上线后头两周,德语搜索里产品页的展示忽隐忽现,有时候Google干脆把英国版展示给德国用户。因为国际定位报告早没了,前两周根本没人发现哪里错,是后来用爬虫工具全站扫,才一次性揪出return tags缺失和canonical跨语言指两个问题。
修复动作就两步:在美英两站补上回指德国站的hreflang,把对称性补全;把德国站所有产品页的canonical改回自指。改完重新提交sitemap,大约两周后德语搜索里的展示稳定下来,德国版正常展示给德国用户。一句话教训:hreflang是一张网,补新版本时务必全网回织,别只在新站单向挂;canonical永远自指,别拿它去跨语言去重。
## hreflang实施10步落地清单
把上面的零碎规则收成一张可执行清单,照着走基本不翻车:
- 列清楚你有哪些语言地区版本,确认每一份内容对应哪几个URL。
- 选放置方式:小站用HTML head法,几万页大站用XML sitemap法。
- 每个页面先写自指那一条hreflang,放第一行。
- 为每个兄弟版本各加一条,确保这一组互相都列全了。
- 检查return tags对称:A指B,B必须指回A,一对都不能漏。
- 加一条x-default,指向语言选择器页或主版本,整组只写一次。
- 核对语言地区代码:ISO 639-1语言 + ISO 3166-1地区,别写en-UK、en-EU。
- 所有URL用绝对地址、协议一致、指向200终态页,不要相对路径不要指向跳转。
- 确认每个被引用页面的canonical都是自指,绝不跨语言指。
- 上线后用爬虫工具全站扫一遍,把这套自检做成每月固定动作。
## 5个最常踩的坑
坑一:return tags不对称。头号死穴,新增语言版本时只单向挂、忘了回指,整组失效。补版本必须全网回织。
坑二:canonical跨语言乱指。为了防重复把B语言版canonical指向A语言版,结果hreflang被canonical掀翻。canonical永远自指。
坑三:x-default当成默认语言。它是匹配不上时的兜底页,最好指语言选择器,不是简单丢给英文版了事,而且整组只写一次。
坑四:语言地区代码写错。en-UK、en-EU这种字母级错误,页面看着正常却悄悄不生效,又没有官方报告提醒,最阴。
坑五:以为hreflang能提排名。它不传权重、不是排名因素,只管“展示哪个版本给谁”,别指望它救一个本来就排不上的站。
## 常见问题解答
## hreflang必须三种放置方式都用吗?
不需要,三种方式(HTML head、XML sitemap、HTTP头)是等价的备选,针对同一组语言版本选其中一种即可,混用反而可能冲突。普通网页用HTML head法或sitemap法二选一,PDF等非HTML文件才需要HTTP头法。小站推荐head法直观好维护,几万页大站推荐sitemap法集中管理。
## 少了self-referential自指标签会怎样?
很可能整组hreflang被Google忽略。hreflang是一组互相引用的集合,每个成员必须包含指向自己的那一条,集合的引用关系才完整。实操上把自指写在hreflang的第一行当成固定动作,就不容易漏。
## x-default是必填的吗?指向哪里最好?
不是强制必填,缺了不会报错,但强烈建议加。它的作用是当用户语言地区跟你所有版本都匹配不上时决定展示哪页。最佳指向是语言选择器页面,让用户自己挑;没有语言选择器就指向主版本(通常英文版)。整组只写一次x-default,不要每个版本都加。
## en-UK和en-GB有什么区别,写错会怎样?
en-GB才是正确写法,因为ISO 3166-1里英国的国家代码是GB不是UK。en-UK属于无效地区码。Google对en-uk这种常见错还能容错纠正,但像en-EU这种(EU不是ISO国家代码)会直接整条失效。代码错的隐蔽之处在于页面看起来一切正常,标签也在,只是悄悄没生效。
## canonical和hreflang冲突时听谁的?
canonical优先,这正是危险所在。如果B语言版的canonical指向了A语言版,Google会跟随canonical、忽略B页面,连带把B身上的hreflang一起作废。正确做法是每个语言版本各自canonical到自己,让hreflang负责跨语言的等价关系,canonical只管同语言内的重复,两者分工绝不交叉。
## hreflang写错了怎么自己发现?现在Search Console还能看吗?
2022年9月国际定位报告下线后,Search Console不再提供专门的hreflang错误监控仪表盘。现在自查靠三层:用Screaming Frog这类爬虫工具批量扫全站检出返回链接缺失、自指缺失、无效代码;对高价值页面手动抽查源码核对自指和对称;翻日志和用site: 看各语言版本的收录展示情况。建议做成每月固定动作,因为错误不会再主动跳出来提醒你。
## 权威参考资料
## 按IP自动跳转语言版本,正在悄悄让你的国际站半数页面进不了Google索引
- URL:https://zhangwenbao.com/international-seo-ip-redirect-geolocation-language-switcher-ux.html
- 分类:国际SEO
- 发布:2026-06-21 | 更新:2026-06-21
- 摘要:老教程说IP重定向毁SEO因为Googlebot只在美国,这话今天只对一半——Google早加了地理分布抓取,可官方至今仍明确反对自动重定向。本文讲透自动跳转为何让页面进不了索引、IP定位为何不可靠、语言切换器UX细节(别用国旗代表语言),并给拆除存量硬跳转的安全步骤和一张决策表。
- 关键词:技术SEO,国际SEO,多语言站
> **TLDR**:摘要:很多出海站做完域名结构、贴完hreflang,最后栽在一个看起来最贴心的功能上——按访客IP自动跳转语言版本。老教程说“IP重定向会毁掉SEO,因为Googlebot只从美国抓取”,这话今天只对了一半:Google早在2015年就加了地理分布抓取和带Accept-Language的抓取,能模拟不同国家的访客。但即便如此,Google官方到今天仍然写着一句话——避免在不同语言版本之间自动重定向用户。原因不在于“机器人看不到”,而在于自动跳转会同时挡住用户和爬虫看到全部版本,再叠加IP定位本身测不准,结果就是你的国际站有一批页面长期进不了索引、用户被锁死在猜错的语言里。这篇把地理重定向、hreflang、语言切换器三者的分工彻底掰开,给一套“检测就提示、提示让选择、选择能记住、每个版本都有独立可抓URL”的落地方案,外加拆除存量硬跳转的安全步骤和一张决策表。
> 摘要:很多出海站做完域名结构、贴完hreflang,最后栽在一个看起来最贴心的功能上——按访客IP自动跳转语言版本。老教程说“IP重定向会毁掉SEO,因为Googlebot只从美国抓取”,这话今天只对了一半:Google早在2015年就加了地理分布抓取和带Accept-Language的抓取,能模拟不同国家的访客。但即便如此,Google官方到今天仍然写着一句话——避免在不同语言版本之间自动重定向用户。原因不在于“机器人看不到”,而在于自动跳转会同时挡住用户和爬虫看到全部版本,再叠加IP定位本身测不准,结果就是你的国际站有一批页面长期进不了索引、用户被锁死在猜错的语言里。这篇把地理重定向、hreflang、语言切换器三者的分工彻底掰开,给一套“检测就提示、提示让选择、选择能记住、每个版本都有独立可抓URL”的落地方案,外加拆除存量硬跳转的安全步骤和一张决策表。
## 先把三件事分清楚:地理重定向、hreflang、语言切换器各管什么
这三个词天天被混着说,但它们处在完全不同的层。混淆它们,是几乎所有自动跳转事故的起点。
- 地理重定向(geo-redirect):服务器或前端根据访客的IP、浏览器语言、或cookie,主动把访客送到另一个URL。它是一个“动作”,会改变用户实际落地的页面。
- hreflang:写在页面里的标注,告诉搜索引擎“这一组页面是同一内容的不同语言/地区版本”。它不传递权重、不是排名因素,只决定搜索结果里给哪个版本,它从不重定向任何人。
- 语言/地区切换器(language switcher):页面上一个让用户自己点选版本的控件。它把选择权交还给人,而不是替人做主。
一句话记住它们的边界:hreflang是写给机器看的对账单,切换器是留给人用的方向盘,而地理重定向是一只替所有人打方向盘的手——问题就出在这只手上。关于hreflang这一层怎么落地不踩坑,hreflang标签实施那篇 (https://zhangwenbao.com/hreflang-implementation-return-tags-x-default-canonical-mistakes.html)里讲过return tags对称和canonical冲突;这篇专门处理“人和爬虫到底落在哪个URL”这个上游问题。
## 老教程的“IP重定向毁SEO”,今天只对了一半
你大概率读到过这个说法:不要按IP跳转,因为Googlebot几乎只从美国IP抓取,你一跳转,它就只能看到美国版,其他国家版本永远抓不到、进不了索引。
这个逻辑在2014年之前基本成立。但2015年1月,Google公开说明了针对“地区自适应页面”(locale-adaptive pages)的两种新抓取方式:地理分布抓取——Googlebot会用美国以外的IP来抓;以及带语言的抓取——Googlebot会带上 Accept-Language 请求头来抓。换句话说,机器人现在能“假装”成德国访客或日本访客来看你的站。当年 Search Engine Land的报道 (https://searchengineland.com/google-now-supports-crawling-indexing-locale-adaptive-web-pages-213778)也把这次变化解读成“Google终于支持抓取地区自适应页面了”。
于是市面上冒出第二种声音:“既然Googlebot能模拟各国访客,那IP跳转就没事了。”这个结论同样是错的,而且错得更危险,因为它给了人继续做硬跳转的借口。下一节说清楚为什么。
## 但Google官方到今天还是那句话:别自动重定向
翻开 Google现行的多区域站点管理文档 (https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites),原话写得很直白:
>
“Avoid automatically redirecting users from one language version of a site to a different language version of a site.”(避免把用户从一个语言版本自动重定向到另一个语言版本。)
给出的理由是:“These redirections could prevent users (and search engines) from viewing all the versions of your site.”(这些重定向可能让用户和搜索引擎都看不到你网站的全部版本。)
推荐的替代做法:“Consider adding hyperlinks to other language versions of a page.”(考虑在页面上加指向其他语言版本的超链接。)
注意理由里那个并列的括号——“用户和搜索引擎”。Google反对自动跳转,从来不只是因为“爬虫的IP在美国”这种技术细节;它反对的是“替所有访客剥夺选择”这件事本身。地理分布抓取是Google自己加的能力,用来给那些已经在做地区自适应的站兜底,不是给你的硬跳转发许可证。同一份文档还补了一句关键的现状说明:“Most, but not all, Google crawls originate from the US, and we don't attempt to vary the location to detect site variations.”——大多数(但不是全部)抓取仍来自美国,而且Google不会主动变换位置去探测你的站点差异。两句话放一起读才完整:能力有,但不保证、不主动、不可依赖。
## 为什么自动跳转会让你半数页面进不了索引
把机制拆到最细,你就明白这不是玄学。假设你做了一个最常见的硬跳转:检测到非德国IP就302到 /en/,检测到德国IP就302到 /de/。
- Googlebot主力IP在美国,请求你的德语页 /de/produkt。
- 你的服务器一看是美国IP,按规则302把它送到 /en/product。
- Googlebot收到302,跟过去抓了 /en/product,然后把这个跳转记下来:它学到“/de/produkt 会跳到 /en/product”。
- 下次它倾向于直接抓目标页,德语页本身的内容它从没真正读到过。
结果就是:你以为上线了德语版,但在Google眼里德语URL只是一个永远指向英文的跳板,内容从未被收录。地理分布抓取理论上能缓解这点,可它只在Google“检测到你的页面是地区自适应”时才自动开启,触发条件不透明、覆盖不全、你无法控制也无法验证。把上索引这件大事押在一个你既不能开关也看不到日志的黑箱上,是在用整个国际站的可见度赌运气。
更隐蔽的一种翻车:有人用JavaScript在前端做跳转,认为“反正用户体验一样”。但前端跳转把判断逻辑放到了渲染层,AI爬虫和很多轻量抓取根本不执行你的跳转脚本,它们看到的是跳转前那一帧——往往是一个空壳或加载态。关于不同渲染方式对抓取的影响,本质和CSR/SSR的老问题同源。
## IP定位本身就不靠谱:你在拿测不准的信号做硬决策
退一万步,就算抓取没问题,按IP定位也站不住脚,因为IP到地理位置的映射精度远没有大家想的那么高。
维基百科对IP地理定位的描述 (https://en.wikipedia.org/wiki/Geolocation_software)很冷静:精度“通常在国家级更高”,到城市、邮编级别就明显下滑。它还记录了一个经典翻车案例——数据库厂商MaxMind曾把约6亿个无法精确定位的IP统统映射到美国堪萨斯州一个农场的坐标,害得那户人家被各路执法和讨债找上门十几年。这说明IP定位的常见做法是“定不准就丢到一个默认中心点”,而你的跳转规则会把这些默认点当成真实位置来执行。
再叠加现实里的几层噪声:
- VPN和代理:用户随手开个VPN,你看到的就是出口节点的国家,跟人在哪毫无关系。维基百科直接点明VPN和代理可以绕过基于地理定位的限制。
- 移动网络:运营商的IP池可能集中注册在某个大城市,一个在慕尼黑用4G的人,IP可能显示在法兰克福甚至另一个国家。
- 企业出口和CDN:跨国公司的流量经常从总部所在国统一出口;用了CDN后,回源IP又是另一回事。
把这些加起来,你会发现“按IP自动决定给谁看哪个版本”是在拿一个误差可观、还能被一键绕过的信号,去做一个一旦做错就把人锁死的硬决策。这买卖怎么算都亏。
## 自动跳转的第二宗罪:把人锁死在猜错的语言里
SEO之外,自动跳转最伤的其实是真实用户。Semrush在它的国际SEO指南 (https://www.semrush.com/blog/an-in-depth-look-at-international-seo/)里举了一个特别精准的例子:一个住在美国、说西班牙语的用户,按IP会被你判成“美国人”从而强制跳到英文版——可他明明更想用西班牙语,而自动跳转剥夺了他的选择。
这种人比你想象的多得多:在德国工作的英语母语者、在日本留学的中国人、出差在外的本国客户、用着公司全球VPN的采购……语言偏好和地理位置从来不是一回事。你越“聪明”地替他们做主,越容易猜错;而猜错的代价不是“少看一个版本”,是用户落到一个读不懂的页面、找不到切回去的入口,直接跳出。Google那句“prevent users from viewing all the versions”,落到体验上就是这么具体。
## 正确姿势一:检测可以有,但只用来“建议”,不用来“执行”
那是不是地理检测一点都不能用?不是。检测信号本身没罪,罪在你拿它直接执行跳转。正确的用法是把“检测”和“动作”解耦:检测出访客可能更适合另一个版本,就提示他,而不是替他跳。
最经典的实现是一条非侵入式横幅(banner)。比如一个法国IP的访客落在了英文页,你在顶部挂一条不挡内容的提示条:
>
“看起来你在法国 —— 要切换到法语版吗? [切换到法语] [留在英文版]”
Semrush的建议正是如此:让用户自己选,用横幅给出“继续用当前语言”或“切到更适合你所在地的版本”两个选项,做得显眼但不强迫。Ahrefs在它的国际SEO最佳实践 (https://ahrefs.com/blog/international-seo/)里说得更狠——按IP或cookie自动重定向应当完全避免,如果用户看的是错版本,就提示他切换,而不是强行送走。这条横幅的几个要点:
- 默认让访客留在他打开的那个URL,横幅只是“建议”,不改变落地页。
- 两个按钮都要有——“切过去”和“留下来”,不能只给一个选项假装尊重。
- 横幅本身不要用JS改变URL或history,保证Googlebot抓到的永远是干净的当前页。
- 用户一旦做了选择,记住它(下一节讲),别每次访问都弹。
## 正确姿势二:语言切换器的UX细节,别用国旗代表语言
横幅是“主动建议”,切换器是“随时可改”。一个合格的国际站,无论用户落在哪个版本,都应该能在页面上轻松找到切到其他版本的入口。这件事看着简单,细节坑很多。
- 别用国旗代表语言。这是头号经典错误。国旗代表国家,不代表语言。你用一面西班牙国旗代表西班牙语,墨西哥、阿根廷、哥伦比亚的几亿西语用户会觉得被无视;用美国国旗代表英语,英国、澳洲、印度用户同样别扭。语言用语言自己的名字来标——“Deutsch”“Español”“日本語”,用本地写法,别用“德语”“西班牙语”这种从访客视角看是外语的叫法。
- 区分“语言”和“地区”两个维度。如果你既分语言又分地区(比如en-US、en-GB、de-DE),切换器最好让用户先选地区/市场,再在其中选语言,而不是把十几个组合平铺成一长串。Yoast在它的国际SEO基础指南 (https://yoast.com/what-is-international-seo/)里也强调一个顺序:组织版本时先按语言、再按国家,能尽量按国家建站就别只按语言含糊带过。同语言多地区这套组合怎么不自己跟自己打架,保哥在 同语言多地区站那篇 (https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html)里专门拆过。
- 切换器要切到“对应的那一页”,不是首页。用户在读德语产品页时点“English”,应该落到英文的同一个产品页,而不是被甩回英文首页。这恰好就是hreflang那一组return tags维护的对应关系——切换器在前端复用同一套对应表最省事。
- 入口要稳定可见。放在页头或页脚的固定位置,别藏进三级菜单。它是国际站的基础设施,不是彩蛋。
## 正确姿势三:用户选了之后怎么记住,又不污染爬虫看到的URL
“让用户选”会引出一个问题:选完总不能每次来都重新弹横幅吧?所以要持久化用户的选择。这里有个关键分寸——持久化只对人生效,绝不能改变Googlebot抓到的内容。
做法是:把用户的选择存进一个cookie(比如 pref_lang=de),下次他主动访问首页或裸域名时,前端可以据此把横幅默认指向德语、或在他点logo回首页时带他去德语首页。但要守住三条红线:
- 不要用cookie在已经带语言路径的URL上做跳转。用户直接点开 /en/product,无论他cookie里存的是什么,都老老实实给他这个英文页。带明确语言路径的URL是用户和搜索引擎的“硬地址”,谁来都一个样。
- Googlebot不带cookie也不带Accept-Language(主力抓取场景下),所以它永远命不中你的持久化逻辑,看到的就是各URL的真实内容——这正是你要的。Google文档明确说抓取请求“without setting Accept-Language”,你的逻辑要默认“没有偏好信号”时一切照常、不跳转。
- 每个版本必须有自己稳定、可抓、可直链的URL。这是整套方案的地基,下一节单独说。
顺带一提,Google还明确推荐用不同的URL区分语言版本,而不是靠cookie或浏览器设置动态切内容——原话是“Google recommends using different URLs for each language version of a page rather than using cookies or browser settings to adjust the content language”。cookie只配做“记住偏好”的辅助,不配做“决定内容”的主力。
## 地基:每个版本都要有独立、稳定、可直链的URL
前面所有姿势能成立,靠的都是同一个前提:/de/ 永远是德语、/en/ 永远是英语,谁(人或机器、带不带cookie、从哪个IP)来访问都一样。这就是Google反复强调“用不同URL”的根本原因——URL是国际站唯一可被收录、可被分享、可被hreflang指向的稳定锚点。
反面教材是“同一个URL根据IP/cookie吐不同语言”的地区自适应方案。Google文档对此的态度是:“If you prefer to dynamically change content or reroute the user based on language settings, be aware that Google might not find and crawl all your variations.”(如果你坚持按语言设置动态改内容或重新路由用户,请注意Google可能找不到也抓不全你的所有变体。)一句话:能用独立URL,就别在一个URL上变戏法。先把域名结构这层定下来——是ccTLD、子目录还是子域名,保哥在 国际站域名结构那篇 (https://zhangwenbao.com/international-seo-domain-structure-cctld-subdirectory-subdomain.html)里给过决策树,结构选定了,每个版本的URL才有干净的归属。
## hreflang和重定向的分工:一个写给机器,一个服务于人
很多人把hreflang当成“重定向的高级版”,这是根上的误解。它俩根本不在一个层面,而且是互补关系:
维度 | hreflang | 地理重定向 |
作用对象 | 搜索引擎 | 真实访客的浏览器 |
做什么 | 告诉引擎“这组页是同内容的不同版本,请给对的人展示对的版” | 把访客从一个URL送到另一个URL |
改变落地页吗 | 不改,只影响搜索结果里展示哪个 | 直接改变用户落到哪一页 |
对SEO的风险 | 配置对就帮忙,配错(缺return tag)整组失效 | 自动硬跳转会挡住抓取和用户选择 |
正确搭配 | 每个版本都标,自指必含 | 不做硬跳转,改成“检测→提示→用户选” |
正解是两者各司其职:hreflang在后台默默帮搜索引擎把“美国人搜到时优先展示en-US版”这件事做对;而当用户已经在站内、或者直接点开了某个URL,由切换器和横幅来服务他,绝不动用强制跳转。hreflang负责“搜索结果里露哪个脸”,切换器负责“进门后想换就换”,两套机制不抢活、不打架。
## 如果你已经上了IP硬跳转,怎么安全拆掉
存量站最怕的就是“知道错了但不敢动”。硬跳转拆除是有风险的——拆不好会短期波动,但留着是长期失血。给一套相对稳妥的步骤:
- 先盘清现状。用不同国家的VPN,或抓取工具模拟各国IP和Accept-Language,把“哪些URL会跳、跳去哪、用什么状态码(301还是302)”列成一张表。301比302更麻烦,因为它已经被引擎当成永久信号学进去了。
- 先停跳转,保留URL。第一步只做一件事:关掉自动跳转逻辑,让每个语言URL都能被直接访问并返回自己的内容。这一步不动hreflang、不动结构,影响面最小。
- 补齐hreflang和自指。确认每个版本互相指、且都自指,return tags对称——这块的坑在hreflang实施那篇里详细写过,这里只强调一点:拆跳转和修hreflang要分两次上线,别一锅端,否则出问题分不清是谁的锅。
- 上横幅和切换器。跳转拆掉后,把“检测→建议”的横幅和稳定的切换器补上,保证用户落错版本时有自助切回的路。
- 观察4到6周。盯GSC各国家维度的展示和点击、各语言URL的收录数。被压抑已久的非英文版本通常会逐步进索引、慢慢爬升。这期间少动多看,频繁改动只会拖长重新评估的时间——这点和站点迁移后的恢复节奏是一个道理。
## 别把语言、地区、货币三个维度塞进同一个跳转
电商出海最容易犯的一个错,是把“显示什么语言”“算哪个地区的运费政策”“标什么货币”全绑在同一个IP跳转里。这三件事的正确处理方式完全不同:
- 语言:用独立URL + hreflang + 切换器,就是这篇讲的全套。
- 地区/市场:影响的是库存、运费、合规、税费,通常对应不同的URL路径或站点,同样靠用户可选,不靠强跳。
- 货币:货币切换可以做得比语言轻——同一个URL上让用户切币种、用cookie记住即可,但要注意价格用结构化数据正确标注、避免不同币种产生重复内容。多语言多货币这层的hreflang和价格Schema怎么叠,是另一篇专门的活,不要混进语言跳转里一起做。
把三个维度拆开,每个维度用最适合它的机制,远比一个“超级智能跳转”稳。那种试图一次猜对用户语言、地区、货币的跳转,错一个维度就全盘皆错。
## 边缘案例:CDN、缓存和移动网络会让事情更糟
就算你坚持要做某种地理逻辑,下面这些技术现实也会反复咬你:
- CDN缓存撞上地理逻辑。如果你在边缘按IP返回不同内容,又开了缓存,很容易把“给德国人看的版本”缓存下来发给所有人,或者反过来。地理逻辑和强缓存天生互相敌对,要做就得在缓存键里带上地区维度,复杂度陡增。
- 回源IP不是用户IP。过了CDN之后,你的回源服务器看到的可能是CDN节点IP,需要正确解析 X-Forwarded-For 才能拿到真实访客IP——配错就是把所有人都定位到某个CDN机房所在国。
- 移动和卫星网络:前面说过,运营商IP池和NAT让移动访客的IP定位经常偏到隔壁城市甚至隔壁国。
这些不是要劝你“把地理逻辑做得更精细”,恰恰相反——它们是又一组理由,说明把关键的“给谁看哪版”决策建立在IP之上有多脆弱。越想做精细,工程债越重,翻车面越大。
## AI搜索时代:自动跳转的新风险
过去自动跳转的受害者是Googlebot,现在多了一类:各种AI爬虫和答案引擎。它们抓取你的内容用于生成回答和引用,而绝大多数AI爬虫不执行JavaScript、不带cookie、IP分布五花八门。你那套依赖前端跳转或IP判断的逻辑,在它们面前要么被绕过、要么命错版本。
后果有两层:一是AI可能只抓到你的英文版,导致非英文市场的用户在AI答案里完全看不到你的本地化内容;二是更隐蔽的——如果AI在不同语言版本里抓到的实体信息对不上(因为它压根没抓全),你的品牌在跨市场的知识表示就会出现裂缝。关于AI时代为什么连hreflang都挡不住跨市场的知识污染、品牌信息怎么在多语言之间保持一致,保哥在 跨市场知识完整性那篇 (https://zhangwenbao.com/international-seo-global-knowledge-integrity-cross-market-ai.html)里展开过。这里的结论很简单:在AI爬虫越来越多的当下,“每个版本都有独立、稳定、无条件可抓的URL”不再是SEO洁癖,而是让模型能把你看全、看对的底线。
## 一张决策表:什么时候检测、什么时候提示、什么时候绝不跳
场景 | 该怎么做 | 绝对别做 |
访客直接点开带语言路径的URL(如 /de/x) | 原样返回该版本,无条件 | 按IP/cookie再跳走 |
访客落在某版本,但IP/浏览器语言显示更适合另一版 | 挂非侵入横幅,给“切过去/留下来”两个选项 | 静默302/301强制跳转 |
访客访问裸域名或不带语言的首页 | 可据偏好建议或温和引导,但保留人工选择入口 | 按IP硬跳到某语言首页且无返回路径 |
Googlebot / AI爬虫来访(无cookie、无偏好头) | 返回当前URL的真实内容,不跳转 | 按“无偏好”就默认跳到英文版 |
用户已在切换器里选过语言 | 用cookie记住,下次温和默认,但不锁死带路径URL | 用cookie在所有页面强制覆盖用户当前请求 |
## 落地清单:10步搭好“不强跳”的国际站路由
- 先定域名结构,确保每个语言/地区版本有独立、稳定的URL路径。
- 关掉一切基于IP的自动硬跳转(301/302),让每个URL可被直接访问。
- 每个版本写全hreflang,互指 + 自指,return tags对称。
- x-default指向语言选择页或不带地区偏好的兜底版本。
- 页头或页脚放固定、可见的语言/地区切换器。
- 切换器用语言本地名(Deutsch、日本語),不用国旗代表语言。
- 切换器切到对应的同一页,不甩回首页。
- 对落错版本的访客,用非侵入横幅“建议”切换,给双向按钮。
- 用户选择存cookie,仅用于温和默认,绝不覆盖带语言路径的直接请求。
- 用多国VPN + 抓取模拟验证:每个URL在任意IP、有无cookie下都返回自己的内容、状态码200、不跳转。
## 5个最常踩的误区
- 误区一:“Googlebot现在能多地抓取,IP跳转没事了。”能力存在但不保证、不可控、Google官方仍明确反对,把上索引押在黑箱上是赌博。
- 误区二:“前端JS跳转对SEO无害。”AI爬虫和轻量抓取不执行JS,看到的是跳转前的空壳,反而更糟。
- 误区三:“用国旗当语言切换器更直观。”国旗是国家不是语言,会系统性地得罪一大批跨国同语用户。
- 误区四:“cookie记住偏好就该全站强制跳。”cookie只配做温和默认,带语言路径的URL必须无条件返回自己。
- 误区五:“语言、地区、货币一个跳转全搞定最省事。”三个维度机制不同,绑一起错一个就全错,拆开各管各的才稳。
## 一个外贸站的真实节奏
分享一个保哥经手过的出海储能品牌的处理节奏,去掉具体数字只讲机制。这个站当初图省事,在CDN边缘按IP做了硬跳转:非美国IP一律302到 /en/,德国IP跳 /de/。上线大半年,德语和法语版的收录数一直趴在个位数,GSC里这两个国家的展示量几乎为零,团队还以为是“内容不够本地化”。
实际一查日志才发现:Googlebot的美国IP每次抓德语URL都被302弹去英文页,德语内容它压根没读到过。处理就按上面那套来——第一周只关跳转、让每个URL自给自足;第二周补齐hreflang对称;第三周上横幅和切换器。之后非英文版本的页面陆续进索引,目标市场的展示开始爬。中间有过两三周排名飘忽,是引擎重新评估的正常代价。复盘下来最值钱的一课不是“hreflang怎么写”,而是那个看起来最贴心的自动跳转,恰恰是把半个站埋进黑箱的元凶——贴心是给人的,不该用在替机器人和用户做主上。
## 常见问题解答
## 按IP自动跳转语言版本,到底会不会被Google当作惩罚项?
它不会触发“人工处罚”那种意义上的惩罚,但Google文档把IP重定向到不同URL描述为“可以说是一种cloaking(伪装)”,并明确建议避免自动重定向。真正的伤害也不是处罚,而是机制性的:自动跳转会让你的非主力语言版本长期抓不到、进不了索引,相当于自废武功。所以问题不在“会不会被罚”,而在“你会不会自己把半个站藏起来”。
## 那我到底还能不能用IP做任何地理逻辑?
能,但只用来“建议”不用来“执行”。检测到访客可能更适合另一个版本时,用非侵入横幅提示他,给“切过去”和“留下来”两个选项,默认让他留在打开的URL。绝对不要静默302/301把人或爬虫强制送走。检测信号没罪,罪在拿它直接改变用户落地页。
## 语言切换器用国旗图标到底有什么问题?
国旗代表国家,不代表语言。一面西班牙国旗代表西班牙语,会让墨西哥、阿根廷等几亿西语用户觉得被无视;一面美国国旗代表英语,英国、澳洲、印度用户同样别扭。正确做法是用语言自己的本地名字来标,比如“Deutsch”“Español”“日本語”,既准确又对每个市场的用户都友好。
## 用户选过语言后,我用cookie帮他自动跳转可以吗?
可以记住偏好,但要守住一条线:cookie只用于“温和默认”,比如他下次访问裸域名或首页时优先给他选过的版本。但如果用户直接点开了带语言路径的URL(如 /en/product),无论cookie存什么,都必须老老实实返回这个英文页。带明确语言路径的URL是用户和搜索引擎共同的硬地址,cookie不能覆盖它。
## Googlebot现在能从多个国家抓取,是不是意味着IP跳转的老问题已经不存在了?
不是。Google确实在2015年加了针对地区自适应页面的地理分布抓取和带Accept-Language的抓取,但这是Google 自动检测到页面是地区自适应时才开启的,触发条件不透明、覆盖不全、你既不能控制也无法验证。同时官方文档至今仍写着“大多数抓取来自美国”且“不会主动变换位置探测差异”,并继续建议避免自动重定向。把上索引押在一个黑箱能力上,风险远大于收益。
## 地区自适应(同一URL按IP返回不同内容)和独立URL,到底该选哪个?
能用独立URL就用独立URL。Google明确推荐“为每个语言版本使用不同的URL,而不是靠cookie或浏览器设置动态切内容”,并警告动态切内容会让它“找不到也抓不全你的所有变体”。地区自适应只在你确实无法拆URL的硬约束下才退而求其次,且必须配合hreflang,并接受Google抓取覆盖不全的风险。
## 权威参考资料
- Google Search Central · 管理多区域和多语言站点 (https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites):官方一手指引,明确“避免在语言版本间自动重定向用户”、推荐用不同URL而非cookie切内容、并说明抓取多数来自美国且不带Accept-Language。
- Search Engine Land · Google开始支持抓取与索引地区自适应页面 (https://searchengineland.com/google-now-supports-crawling-indexing-locale-adaptive-web-pages-213778):2015年报道,解读Googlebot新增地理分布抓取(美国以外IP)与带Accept-Language的抓取,并指出这是面向已有地区自适应站的自动能力。
- Ahrefs Blog · 国际SEO 10条最佳实践与清单 (https://ahrefs.com/blog/international-seo/):明确按IP或cookie自动重定向应完全避免,IP定位不可靠且会让本地化内容抓不到,应改用语言/地区切换器让用户自选。
- Semrush Blog · 国际SEO全球成功最佳实践 (https://www.semrush.com/blog/an-in-depth-look-at-international-seo/):用“在美国的西班牙语用户被强制跳英文”的例子说明自动跳转剥夺选择,建议用非侵入横幅让用户继续当前语言或切到更适合所在地的版本。
- Wikipedia · 地理定位软件 (https://en.wikipedia.org/wiki/Geolocation_software):IP地理定位精度国家级较高、城市级明显下滑,记录了MaxMind把约6亿IP误映射到堪萨斯农场的案例,并指出VPN与代理可绕过地理限制。
- Yoast · 什么是国际SEO (https://yoast.com/what-is-international-seo/):从语言优先、按国家建站、同语言多地区必用hreflang的角度,说明国际站结构与用户定位的基础原则。
## 同一种英语卖到美英澳:同语言多地区站的国际SEO怎么不自己跟自己打架
- URL:https://zhangwenbao.com/international-seo-same-language-multi-region-en-us-gb-au-duplicate-content-hreflang.html
- 分类:国际SEO
- 发布:2026-04-22 | 更新:2026-06-15
- 摘要:同一种英语卖到美国、英国、澳大利亚,开多个地区站内容却几乎一样,最容易被Google判重复内容、自己人互相蚕食排名。本文讲清同语言多地区站怎么用hreflang区域变体、canonical配合、URL架构和本地化信号区分开,不再自己跟自己打架。
- 关键词:重复内容,hreflang,跨境独立站,国际SEO
> **TLDR**:摘要:做出海独立站的人,对多语言国际化的坑大多有心理准备:法语、德语、西语,语言都不一样,该上hreflang、该本地化翻译,至少知道有这么回事。可有一类坑,恰恰因为太不像坑,反而漏得最凶——同一种英语,卖到美国、英国、澳大利亚、加拿大,开了好几个地区站,内容几乎一模一样,你以为这是同一份内容铺得更广,Google却很可能把它们当成一堆互相打架的重复页。保哥这篇专讲这个被严重低估的场景:同语言、多地区。它最阴险的地方在于,语言相同让你放松了警惕,内容雷同又让Google犯了难,结果就是几个地区版本互相蚕食排名、谁也排不上去。这篇从Google到底怎么判这种重复、hreflang的区域变体怎么配、canonical和hreflang怎么不打架、URL架构怎么选,一路讲到同样是英语美版英版到底该改什么,帮你把这摊看似省事、实则最容易内耗的局给理顺。
> 摘要:做出海独立站的人,对多语言国际化的坑大多有心理准备:法语、德语、西语,语言都不一样,该上hreflang、该本地化翻译,至少知道有这么回事。可有一类坑,恰恰因为太不像坑,反而漏得最凶——同一种英语,卖到美国、英国、澳大利亚、加拿大,开了好几个地区站,内容几乎一模一样,你以为这是同一份内容铺得更广,Google却很可能把它们当成一堆互相打架的重复页。
保哥这篇专讲这个被严重低估的场景:同语言、多地区。它最阴险的地方在于,语言相同让你放松了警惕,内容雷同又让Google犯了难,结果就是几个地区版本互相蚕食排名、谁也排不上去。这篇从Google到底怎么判这种重复、hreflang的区域变体怎么配、canonical和hreflang怎么不打架、URL架构怎么选,一路讲到同样是英语美版英版到底该改什么,帮你把这摊看似省事、实则最容易内耗的局给理顺。
## 为什么“同一种英语卖到美英澳”,是国际SEO里最隐蔽的一处漏勺?
出海做独立站的人,对国际化SEO的坑大多有点心理准备,但准备的方向往往偏了。大家警惕的是语言不通的多语言站——做法语、德语、西语版本时,谁都知道得翻译、得上hreflang、得本地化。语言这道门槛太显眼,反而逼着你认真对待。真正漏水漏得最凶的,是另一类长得完全不像坑的场景:同一种英语,卖到美国、英国、澳大利亚、加拿大。
这个场景为什么阴险?因为它同时踩中了两个让你和Google都放松警惕的条件。第一,语言相同——你开美版、英版、澳版的时候,根本不觉得这是在做国际化,感觉就是把同一个站多铺几个地区,内容直接复用,省事。第二,内容雷同——美版英版的产品描述、分类页、博客文章,可能95% 的文字一模一样,只差货币符号和零星几个拼写。在你眼里这是高效,在Google眼里这是一堆几乎无法区分的重复页。
于是悲剧就发生了:你以为开了三个地区站是把生意铺到了三个市场,实际上Google很可能只认了其中一个,把另外两个当重复内容折叠掉。更糟的是它认的那个,未必是你希望它在某个地区展示的——英国用户搜过来,看到的是美元定价、美国仓发货的美版页,转化直接崩。语言相同麻痹了你,内容雷同难住了Google,两者一叠加,就是同语言多地区站最典型的内耗。
保哥这些年帮不少出海客户体检过SEO,凡是开了多个英文地区站的,十有八九栽在这上面,而且自己浑然不觉,只觉得“英版怎么一直没流量”。这篇就专门把这摊看似省事、实则最容易自我消耗的局拆开讲透。国际化SEO的基础框架——hreflang怎么用、多语言站怎么避坑——保哥在国际化SEO与hreflang完全指南 (https://zhangwenbao.com/international-seo-hreflang-complete-guide.html)那篇里搭过整体的盘子,这篇是往里钻一个最容易被跳过的死角:当语言这个最大的区分项消失了,你该靠什么让Google分清谁是谁。
## 同语言多地区站,Google凭什么判定两个页面在“自己跟自己打架”?
要解决问题,先得搞清Google到底是怎么看待这种局面的。这里有个被广泛误读的概念得先掰正:Google没有所谓的“重复内容惩罚”。它不会因为你有两个相似页面就降你的权、罚你的站。它做的事情更朴素,也更让人头疼——去重和归并。
当Google抓到两个内容高度相似的页面,它会判断这俩本质上是不是同一份内容。如果是,它不会两个都展示(那对用户是冗余),而是从中挑一个它认为最具代表性的版本放进索引和搜索结果,另一个则被折叠、忽略,或者排名被大幅压低。整个过程是它替你做的决定,而它做决定的依据,是它能从页面上读到的各种信号。
问题的核心就在信号。语言不同的多语言站,语言本身就是一个极强的区分信号——一个法语页和一个英语页,Google一眼就知道它们服务不同人群,根本不会拿去比对重复。可你两个版本都是英语,内容又雷同,你等于亲手抽掉了Google最依赖的那个区分依据。剩下的线索少得可怜:也许就差一个货币符号、几个拼写。在Google看来,这两个页面相似度高到几乎是同一个东西,于是顺理成章地启动去重,二选一。
这就是“自己跟自己打架”的由来。本该一个吃美国市场、一个吃英国市场的两个版本,因为Google分不清、把它们当成了竞争同一批结果的重复页,结果要么互相稀释、谁都排不上去,要么一个版本完全盖过另一个、被盖的那个市场颗粒无收。这种内部蚕食和真正的跨页面关键词蚕食是两码事,它纯粹源于地区信号缺失,但破坏力一点不小。解法不是把内容改得面目全非,而是补上那个缺失的信号,明确告诉Google:这不是重复,这是同一内容面向不同地区的本地化版本。而承担这个任务的,主要就是接下来要讲的hreflang。
## hreflang区域变体怎么配,才能让Google分清美版和英版?
hreflang是这整套解法的主角。它的作用,就是替你把“这个页面服务哪个语言、哪个地区的人”这件事明明白白告诉Google。多语言站里大家用它区分语言,而在同语言多地区站里,它要承担更精细的活——区分同一种语言下的不同地区。
关键在于hreflang的值不只能写语言,还能写“语言加地区”的组合。光写 en 是不够的,那只说了语言;你要写成 en-us(美国英语)、en-gb(英国英语)、en-au(澳大利亚英语)、en-ca(加拿大英语)这样的language-region组合,前半段是ISO 639语言码,后半段是ISO 3166地区码。
这样Google才知道,这个版本不光是英语,还是专门给美国/英国/澳洲用户准备的。Google官方在Google搜索中心 — Tell Google about localized versions of your page(hreflang区域子标签en-GB/en-US与双向自指规范) (https://developers.google.com/search/docs/specialty/international/localized-versions)里明确说明 en-gb 和 en-us 都是合法值,而单纯的 en 作为兜底的通用版。
配hreflang有两条铁律,违反任何一条整组都会失效。第一条是自指:每个版本的hreflang列表里必须包含它自己。美版页面要列出en-us指向自己,再列en-gb、en-au指向对应版本。漏掉自指,Google会忽略整组标记。第二条是双向互指:所有版本必须两两互相指认,缺一不可。如果美版指了英版、英版却没回指美版,这组关系就是断的,Google直接当它不存在。Google那份文档说得很直白——两个页面如果不互相指向,标记会被忽略。
具体落地时还要加一个 x-default,作为没有匹配到任何特定地区时的默认兜底版本。比如一个来自新加坡的英语用户,你没单独做新加坡版,Google就会把他导向x-default指定的那个版本。
实现方式上,hreflang可以放在HTML的head里、HTTP响应头里,或者sitemap里,三选一即可,大站通常用sitemap管理更省心。无论哪种方式,自指和双向互指这两条都不能破。hreflang的完整写法和常见错误,保哥在前面提到的hreflang完全指南里有更细的拆解,这里强调的是同语言场景下它从“可选优化”变成了“生死攸关”——因为没有它,Google真的没别的办法分清你的美版和英版。
## 光配了hreflang还不够,canonical和它怎么搭才不互相抵消?
很多人配完hreflang觉得万事大吉,结果地区版本还是一个个消失,问题十有八九出在canonical上。canonical和hreflang是国际化SEO里最容易被搞混、一搞混就出大事的一对。它们各管一摊,职责绝不能越界。
先说清楚两者分工。canonical管的是“同一地区内部的真重复”——比如你的美版产品页有一个带UTM参数的URL、一个带排序参数的URL、一个干净的URL,这三个是同一个页面的不同入口,你用canonical把它们都指向那个干净的美版URL,告诉Google只索引这一个。
这是canonical的正确用法,Google在Google搜索中心 — How to specify a canonical URL with rel="canonical"(重复或高度相似页面的规范化处理) (https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)里把它描述为指认规范版本的强信号。而hreflang管的是“跨地区的本地化版本”——美版、英版、澳版之间的关系,全部交给hreflang,绝不能用canonical去处理。
最致命的错误,就是把英版、澳版的canonical指向美版。保哥见过太多次了,团队想着“美版是主站,其他都规范到主站吧”,一行配置下去,等于亲口告诉Google:英版澳版不必单独索引,它们的规范版本是美版。Google照办,于是英国、澳洲用户搜索时,搜到的全是美版页——美元定价、美式拼写、美国仓发货,本地化全白做,英澳两个市场的自然流量直接归零。
更要命的是这种错误隐蔽,hreflang你配得再漂亮,被一个跨地区的canonical一压,全盘作废,因为canonical的去重信号优先级压过了hreflang的地区区分。
正确的配法只有一种:每个地区版本的canonical都自引用,指向它自己。美版canonical指美版自己,英版指英版自己,澳版指澳版自己,谁也不跨地区指别人。地区之间的关系,干干净净地全部交给双向自指的hreflang。canonical负责把每个地区内部的参数重复收敛干净,hreflang负责把各地区横向连成一张本地化网络,两者各司其职、互不干涉,整个体系才立得住。一句话记牢:canonical不准跨地区,跨地区是hreflang的活。
## 同语言多地区站的URL架构,到底选ccTLD、子域还是子目录?
信号配对的问题理顺了,还有个更底层、定了就难改的决策——URL架构。你的美版、英版、澳版放在什么样的网址结构下,直接影响地理定向信号的强弱、权重的归集方式和长期的维护成本。Google在Google搜索中心 — Managing multi-regional and multilingual sites(多区域多语言站管理:地理定向、ccTLD/子域/子目录与同语言重复内容处理) (https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)里把主流选项的利弊列得很清楚,保哥结合实战给你拆一下三种架构的取舍。
第一种是国家顶级域名(ccTLD),比如example.co.uk、example.com.au。它给Google的地理定向信号最强、最干净——域名后缀本身就是国别声明,用户一看也立刻知道这是本地站,信任感最高。代价是每个ccTLD都是一个独立站点,域名权重彼此不共享,每开一个新地区都要从零养权重,DNS、证书、服务器、内容维护全得翻倍,成本和工作量最重。它适合那些每个地区都打算长期重投入、深耕本地市场的成熟卖家。
第二种是子目录,比如example.com/uk/、example.com/au/。所有地区共享主域的权重,这是它最大的优势——你在主域上积累的所有权威,每个地区版本都能沾光,新地区起步快得多。搭建和维护也最省事,一套域名一套基础设施搞定。缺点是地理定向信号比ccTLD弱,各地区站点的边界在搜索引擎眼里不那么清晰,需要靠hreflang和GSC里的地理定位设置来补强。对大多数刚开始做多地区的中小出海站,保哥的默认推荐就是子目录。
第三种是子域,比如uk.example.com。它在技术上介于前两者之间,但有个尴尬之处:用户和Google都不太容易一眼看出它的地理意图,权重共享也不如子目录那么彻底,性价比通常两头不靠。除非有特定的技术架构原因(比如不同地区跑在不同系统上),否则保哥一般不优先推荐。
给个实战的决策逻辑:起步阶段、预算有限、想让权重集中,选子目录;某个地区做大了、值得独立深耕、不在乎从零养权重,再升级到ccTLD。多货币、多地区在具体建站平台上怎么落地,比如WooCommerce这类站的货币切换和价格Schema怎么处理,保哥在WooCommerce多语言多货币SEO (https://zhangwenbao.com/woocommerce-multilingual-multicurrency-seo-hreflang-url-schema.html)那篇里有平台层面的实操。架构是地基,一旦铺开内容、攒起权重再想换,迁移成本极高、风险极大,所以起步前务必想清楚长期规划,别图一时省事埋下日后大改的雷。
## 那子目录里要不要再套一层/en-us/这种语言和国家前缀?
定了用子目录,还有个更细的纠结常被翻来覆去地问:美国市场的内容,到底放在example.com/blog/这样干净利落,还是写成example.com/en-us/blog/、把语言和国家也标进路径?不少人担心多套一层前缀会稀释权重,或者觉得关键词埋得太深会影响排名,纠结到迟迟定不下来。
2026年6月,Google的John Mueller在一场面向技术SEO的公开问答里直接给这个问题定了调:拿/blog/还是/en-us/blog/来放美国内容,实践中看不出SEO差别,这一层前缀既成就不了你的站,也毁不掉它。说白了,在目录前缀的命名上反复纠结,本身就是个伪问题——它根本不是排名因素。这跟Google一贯的口径完全对得上,Google搜索中心关于URL结构的官方指南 (https://developers.google.com/search/docs/crawling-indexing/url-structure)翻来覆去强调的也只是“结构要简单、逻辑清晰、对人可读”,从没把目录层级的深浅、要不要带语言前缀列进排名信号。
那这层前缀到底按什么标准定?Mueller给的判断维度压根不是SEO,而是数据分析和长期维护。带上/en-us/、/en-gb/这样的前缀,最实在的好处是你在GSC、GA里能直接按目录把不同国家、不同语言的数据切开看,归因清清楚楚——这对做多地区的出海站尤其值钱,你本来就要分地区盯流量。反过来,要是你眼下只做美国一个市场、短期也没打算开第二个地区,多套一层/en-us/只是白白拉长路径,用/blog/反而更利落。把判断标准从“哪个对SEO更好”换成“哪个让我后续分析和扩展更省事”,这个决策立刻就清楚了。还有一条得记牢:无论选哪种,定了就别来回改——目录结构一旦上线、攒起了权重,反复折腾带来的301损耗和抓取波动,远比那层前缀本身的影响大得多,挑一个能扛住5到10年的结构稳住,才是正经事。
## 同样是英语,美版和英版页面具体该改哪些地方才算真本地化?
前面解决的都是技术信号,但有个根子上的问题绕不开:如果你的美版和英版除了货币符号几乎一字不差,那hreflang配得再对,本地化的说服力也是虚的。Google越来越看重内容是否真的为当地用户提供了差异化价值,两个版本差异太薄,它仍可能倾向于把它们当冗余处理。所以技术信号要配,内容上的真本地化也得跟上,两条腿走路。
真正的本地化,是一整套面向当地真实购物场景的调整,远不止换个货币。货币要换成当地币种,而且得是真实可结算的本地价格,不是简单按汇率换算的数字。拼写要系统性切换:美式的color、customize、center、catalog,对应英式的colour、customise、centre、catalogue,这种差异遍布全站文案,得整体处理而非零星改几个。尺码体系对服装鞋类尤其要命,美码、英码、欧码、澳码完全不同,一个澳洲用户看到美码标注根本不知道该买哪个。
再往下,物流信息要写当地真实的发货地、配送时效和运费——英国用户最关心的是从哪发货、几天到、要不要付关税,你写着美国仓发货毫无意义。联系方式和客服时间要对应当地时区,日期格式要切换(美式month/day/year对英式day/month/year,这个不改会直接造成误解),度量单位也要跟当地习惯走(英里对公里、华氏对摄氏、磅对千克)。
更深一层是法律合规与本地信任信号。各国对退货政策、消费者权益、价格是否含税显示(比如英国习惯含VAT报价、美国习惯税前报价)的要求和习惯都不同,这些文案不本地化,轻则用户困惑、重则触犯当地法规。把这些都做扎实,两个版本的差异就从“换了货币符号”变成了“真的在为两地不同用户服务”,Google自然更有理由把它们当成两份各有价值的内容分别保留。本地化做得越实,地区版本被去重的风险越低,这是技术信号之外、最被低估的一道护城河。
## 同一个产品,各地区的关键词差异该怎么落到页面上?
本地化里还有一个层面,比拼写货币更影响SEO,却最常被跳过——关键词。很多人想当然地以为都是英语,关键词就能通用,于是美版英版用同一套词。这恰恰是同语言多地区里最隐蔽的失分点,因为同一个东西,英美澳常用的搜索词差别可能大到让某个版本在核心词上直接缺位。
最经典的例子是裤子:美国人搜pants,英国人搜trousers。如果你美版英版都只优化pants,英版在英国本地最核心的那个词上就是空白的,等于自废武功。类似的用词分歧一抓一大把:运动鞋是美式sneakers、英式trainers;手电筒是美式flashlight、英式torch;公寓是美式apartment、英式flat;薯条、电梯、垃圾、汽油……几乎每个高频品类都有自己的英美差异。你用错了词,不是排名低一点的问题,是当地用户根本搜不到你。
除了硬性的用词差异,还有更软性的搜索习惯差异。各地区的热门修饰词、长尾结构、季节性(南半球的澳洲和北半球的英美季节正好相反,夏装冬装的搜索时间整个错开)、甚至对同一功能的关注点都不一样。这些都要基于各地区当地的真实关键词数据去摸,而不是拿美国的词表套全球。
落地的做法是:每个地区版本,基于当地真实搜索数据,分别调整标题、H1、正文核心词和长尾布局,让每个版本说的是当地人真正会搜的话。这件事做对了,你的地区版本就不只是货币和拼写不同,而是从最底层的搜索词层面就咬住了当地市场——这反过来又强化了内容差异化,让Google更难把它们看成重复。
关键词本地化的具体方法、直译陷阱和人审流程,保哥在前面提到的关键词本地化那篇 (https://zhangwenbao.com/overseas-indie-keyword-localization-translation-traps-native-review.html)里讲得很细。还要提醒一句,跨语言场景下品牌和产品的实体一致性也很关键,那块更深的坑,保哥在国际化SEO最难的不是hreflang (https://zhangwenbao.com/multilingual-entity-seo-cross-lingual-reconciliation.html)那篇里专门讲过实操对不上的根因,做多地区做到一定规模迟早会撞上。
## 把同语言多地区的国际SEO收成一张能照着走的清单
讲了这么多机制,保哥把整套同语言多地区站的国际SEO动作压成一张清单,你照着从上往下过一遍,基本就能把这摊局理顺。
环节 | 关键动作 | 最容易踩的反面 |
区分信号 | 每个地区版本配language-region的hreflang(en-us/en-gb/en-au) | 只写en不带地区,等于没区分 |
hreflang完整性 | 每个版本自指 + 所有版本双向互指 + 加x-default兜底 | 漏自指或单向指,整组失效 |
canonical | 每个地区版本canonical自引用,指向自己 | 把英版澳版canonical到美版,地区流量塌方 |
URL架构 | 起步用子目录集中权重,做大后升级ccTLD | 架构没规划,铺开后再改成本巨大 |
内容本地化 | 货币、拼写、尺码、物流、日期、单位、合规全套切换 | 只换货币符号,差异太薄被当冗余 |
关键词本地化 | 各地区基于当地数据分别优化标题/H1/正文核心词 | 全球套一套词,某地区核心词缺位 |
持续监控 | GSC分地区看着陆页与查询,盯错配版本 | 从不分地区看数据,问题埋着不知道 |
这张表的逻辑其实就两层:第一层用hreflang和canonical把技术信号配对,让Google分清谁服务谁;第二层用内容和关键词的真本地化,让每个地区版本都值得被单独保留。技术信号缺了,Google分不清;内容差异薄了,Google懒得分。两层都做扎实,你的多地区站才不会自己跟自己打架。
最后还有一条贯穿始终的功夫——监控。配完不是结束,要常去Google Search Console里分地区看每个市场的着陆页和搜索查询,确认英国用户搜到的确实是英版、美国用户搜到的是美版。一旦发现某个地区的流量被错配版本接走,多半是hreflang断了链或canonical配错了,及时回查这两处。同语言多地区的局,配对的时候要细,配完之后要盯,它不是一锤子买卖,而是一套需要持续校准的体系。
## 常见问题解答
## 内容几乎一样的英文站,分美国和英国两个版本,会被Google当成重复内容惩罚吗?
先纠正一个概念:Google没有传统意义上针对重复内容的人工惩罚,它做的是去重和归并。当你有美版和英版两个内容高度雷同的英文页面,Google会从中挑一个它认为最该展示的版本放进搜索结果,把另一个折叠或忽略。问题就出在这里:如果你没有正确的信号告诉它这两个页面分别服务不同地区,它的挑选可能跟你的预期完全相反——它给英国用户展示了美版,或者干脆只留美版、把英版雪藏。后果不是被罚,而是地区定向失效、本该各自吃各自市场的两个版本变成一个吃、一个饿。所以重点从来不是怕被惩罚,而是要主动用hreflang把每个版本对应哪个地区说清楚,让Google在面对英国搜索者时准确地端出英版、面对美国搜索者时端出美版。把信号配对,重复就不再是问题,而是合理的地区覆盖。
## 同样是英语,美版和英版内容改动很小,hreflang还有必要配吗?
很有必要,改动越小越要配。这正是同语言多地区最反直觉的地方——语言不同的多语言站,Google光靠语言就能大致分清谁是谁;可你两个版本都是英语,内容又雷同,Google几乎没有别的线索去区分它们,hreflang就成了它唯一可靠的依据。不配hreflang,Google看到两个长得几乎一样的英文页,第一反应就是去重,二选一。配上en-US和en-GB的hreflang,并让两个版本双向自指,就等于明确告诉它:这不是重复,这是同一内容针对美英两地的本地化版本,请按搜索者所在地区分别展示。哪怕两个版本只差货币符号、拼写和运费信息,这些差异对当地用户就是真实价值,hreflang的作用就是让Google尊重并保留这份地区差异,而不是把它当冗余抹掉。
## 我把英版、澳版的产品页都canonical到美版,这样做对吗?
这是同语言多地区里最致命、也最常见的错误,必须立刻停手。canonical的语义是告诉Google这几个URL是同一个东西、请只索引指定的主版本。一旦你把英版、澳版都canonical到美版,等于亲口说英版澳版不必单独索引、只留美版——结果英国澳洲用户搜索时,Google端出的是美元定价、美式拼写、美国仓发货的美版页,本地化全白做,英澳两个市场的自然流量直接塌掉。正确做法是每个地区版本的canonical都自引用、指向它自己,地区之间的关系完全交给hreflang表达。记住这条铁律:canonical管同一地区内的真重复,hreflang管跨地区的本地化版本,两者职责不能混,更不能用canonical跨地区合并,那是自毁长城。
## 同语言多地区站,URL到底用ccTLD、子域还是子目录好?
没有标准答案,取决于资源和市场权重。ccTLD(如example.co.uk、example.com.au)地理定向信号最强最干净、用户信任度高,但每个域名都是全新站点,权重不共享、要从零养、成本最重,适合每个地区都打算长期深耕的成熟卖家。子目录(example.com/uk/)共享主域权重、搭建维护最省事,是多数中小出海站的务实之选,缺点是地理信号弱些、站点边界不清晰。子域(uk.example.com)介于两者之间,但地理意图不够直观,性价比通常不如子目录。保哥给多数客户的建议是:先用子目录起步、把权重攒在主域上,某个地区做大到值得独立投入,再升级到ccTLD。架构是地基,定了再改成本极高,起步前务必想清楚长期规划。
## 美版英版除了货币和拼写,还有哪些地方必须本地化才有意义?
如果只改货币符号和几个拼写,差异太薄,对用户和搜索引擎都说服力不够。真正有价值的本地化是一整套面向当地真实购物场景的调整:货币换成当地币种且是真实可结算的价格;拼写全面切换(美式color/customize对英式colour/customise);尺码体系换成当地通行的(美码、英码、欧码、澳码各不同,服装鞋类尤其关键);物流写当地真实的发货地、时效和运费;客服时间对应当地时区;日期格式切换(美式月/日/年对英式日/月/年);度量单位(英里对公里、磅对千克)跟当地习惯。再往深,法律合规文案(退货政策、税费是否含税显示)各国要求也不同。本地化做得越实,差异越真实,Google越有理由把两个版本当成各自有价值的内容分别保留,而不是冗余去重。
## 各地区同一个产品,关键词不一样,标题和正文要不要分别改?
要,而且这是同语言多地区里最容易被忽略、却最能拉开差距的一环。很多人以为都是英语关键词就能通用,其实同一个东西在英美澳常用的搜索词差别不小。最经典的是裤子,美国人搜pants,英国人搜trousers,你要是美版英版都只用pants,英版在当地核心词上就缺位了。类似的还有运动鞋(美sneakers/英trainers)、手电筒(美flashlight/英torch)、公寓(美apartment/英flat)。除了用词差异,各地区的搜索习惯、热门修饰词、季节性也不同。正确做法是各地区版本基于当地真实关键词数据,分别调整标题、H1、正文核心词和长尾,让每个版本说当地人会搜的话,从搜索词层面就贴住当地市场,而不只是货币不同。
## 同语言多地区国际SEO最容易踩的5个坑
照例收尾,把保哥见过最高频的5个坑摆出来,对照自查,每一个都可能让你的地区版本白白内耗。
坑一:仗着都是英语,连hreflang都懒得配。这是最根本的错。语言相同时hreflang是Google区分美版英版的唯一可靠依据,不配它,两个雷同英文页只会被去重二选一。同语言场景下hreflang不是优化项,是生命线。
坑二:hreflang漏了自指或没做双向互指。每个版本必须列出自己,所有版本必须两两互指,少一条整组标记就被Google忽略。配了等于没配的情况,九成出在这两条铁律没守住。
坑三:把英版澳版canonical到美版。这是最致命的隐形杀手。canonical跨地区合并等于告诉Google只索引美版,英澳市场的本地化全废、流量归零。canonical只管同地区内部重复,跨地区永远是hreflang的活。
坑四:内容只换货币符号,本地化太薄。美版英版差异薄到只剩货币,Google仍可能当冗余处理。拼写、尺码、物流、日期、单位、合规要全套本地化,差异做实了地区版本才站得住。
坑五:全球套一套关键词,无视地区用词差异。pants和trousers、sneakers和trainers,用错词当地用户根本搜不到。各地区必须基于当地真实搜索数据分别布局核心词,这是最容易被跳过、也最拉差距的一环。
这5个坑串起来,其实指向同一个认知误区:以为“同语言”等于“同一份内容可以省事复用”。恰恰相反,语言相同抽掉了Google最依赖的区分信号,反而要求你在技术配对和内容本地化上做得更细、更实。把这套功夫做到位,同语言多地区不再是互相蚕食的内耗局,而是同一份心血在多个市场各自开花的高效布局。这活儿不性感,却实实在在决定了你的出海生意能不能在每个目标市场都被对的人搜到。
## 权威参考资料
## 多语言AI可见性怎么做?翻译内容为什么在AI检索里吃亏
- URL:https://zhangwenbao.com/multilingual-ai-visibility-geo-optimization.html
- 分类:国际SEO
- 发布:2026-04-16 | 更新:2026-06-01
- 摘要:深度解析非英语市场AI搜索可见性失效的技术根因,涵盖全球AI平台版图、嵌入层质量差距、文化参数偏移等核心问题,提供可落地的多语言GEO优化策略与实操步骤。
- 关键词:GEO,AI可见性,AI检索
> **TLDR**:摘要:非英语市场的AI搜索可见性为什么常常失效?本文深度解析背后的技术根因,涵盖全球AI平台版图、嵌入层的质量差距、文化参数偏移等核心问题,给可落地的多语言GEO优化策略和实操步骤,帮你的内容在非英语的AI搜索里也能被准确理解、稳定引用。
> 摘要:非英语市场的AI搜索可见性为什么常常失效?本文深度解析背后的技术根因,涵盖全球AI平台版图、嵌入层的质量差距、文化参数偏移等核心问题,给可落地的多语言GEO优化策略和实操步骤,帮你的内容在非英语的AI搜索里也能被准确理解、稳定引用。
你花了半年时间打磨的AI可见性策略——结构化数据、llms.md (https://zhangwenbao.com/llms-txt-guide.html)、实体信号、内容API——在英语市场跑通了,数据在涨,被引用率在提升。然后你把这套体系"翻译"到日语市场、韩语市场、中文市场,发现数据一动不动。不是小幅下降,是根本没有反馈。
这不是你执行力的问题。这是一个系统性的结构缺陷,而且整个行业到现在还没有正视它。
当前AI可见性领域的几乎所有框架——向量索引维护、训练数据截止日期内容日历、社区信号、机器可读内容架构——都是英语从业者设计的,在英语环境中测试的,用英语加权的基准来验证的。2024年的一项研究分析发现,超过75%的主流LLM评估基准都是优先为英语任务设计的,非英语测试只是附带的补充。建立在这些基准之上的策略,天然继承了同样的偏差。
这篇文章要做的,是把"为什么你的AI可见性策略出了英语就不灵"这个问题从表层的"翻译不够好"推进到底层的技术结构,然后给你一套可以直接拿去执行的多语言GEO优化方案。
## 全球AI平台版图:你优化的对象可能根本不存在
在讨论任何优化策略之前,必须先回答一个大多数英语中心主义的可见性讨论从来不问的问题:你的目标用户到底在用哪个AI系统?
这个问题的答案,在不同市场之间的差异程度,远远超出了大多数全球营销团队的认知。
## 中国市场:一个完全独立的AI生态系统
中国拥有14亿人口,ChatGPT (https://zh.wikipedia.org/wiki/OpenAI)和Gemini在这里不可访问。AI可见性竞争发生在一个完全独立的生态系统里。百度的文心一言在2026年1月月活突破了2亿,根据QuestMobile的数据,百度在AI搜索市场份额中占据领先地位。但百度早已不是一家独大——字节跳动的豆包在2025年底日活突破了1亿,阿里的通义千问月活也在同期超过了1亿。
这意味着什么?你精心构建的英语内容架构,在中国市场不是"表现不佳",而是根本不存在。
而且中国市场的社区信号逻辑也完全不同。小红书目前日均处理约6亿次搜索查询,接近百度搜索量的一半。超过80%的用户在购买前会先在小红书搜索,90%表示社交内容直接影响了他们的购买决策。一个围绕英语评测平台构建的社区信号策略,在中国市场毫无作用。
## 韩国市场:Naver的封闭检索生态
韩国是另一个典型案例。Naver在2025年占据了韩国搜索市场62.86%的份额,是Google (https://developers.google.com/search?hl=zh-cn)份额的两倍多。自2025年3月起,Naver开始部署由自研HyperCLOVA X模型驱动的AI Briefing生成式搜索模块,计划到2025年底让最多20%的韩语搜索触发AI生成的回答。
关键在于,Naver是一个封闭生态——搜索结果优先导向Naver自身的内部属性,而不是开放互联网。西方品牌那套为开放网络爬虫设计的结构化数据和llms.md实现,从架构层面就不是为触达Naver的检索层而构建的。
仅中国和韩国两个市场,就代表了超过十亿的AI活跃用户,而标准的全球可见性策略完全触及不到这些用户。
## 欧洲:主权AI的崛起
欧洲正在经历一波本土AI模型的集中爆发:
法国的Mistral AI推出的Le Chat在2025年2月上线后迅速登顶法国免费应用榜,法国军方授予Mistral一份持续到2030年的部署合同,法国在2025年AI行动峰会上承诺了1090亿欧元的AI基础设施投资。德国的Aleph Alpha支持五种语言训练,从设计之初就内置EU合规。欧盟层面,2025年启动的OpenEuroLLM计划正在开发覆盖全部24种EU官方语言的开源LLM家族。瑞士的Apertus项目支持超过1000种语言,40%的训练数据为非英语内容,涵盖瑞士德语和罗曼什语。
## 中东、亚太、拉美、非洲:区域AI遍地开花
阿联酋的Falcon系列模型从70亿到1800亿参数不等,2025年5月发布的Falcon Arabic在阿拉伯语基准测试中击败了参数量十倍于它的模型。沙特的HUMAIN由主权财富基金支持,定位为全栈国家级AI生态系统。
印度的Bhashini项目已产出350多个AI语言模型,2025年6月发布的BharatGen是印度首个政府资助的多模态LLM。新加坡的SEA-LION支持11种东南亚语言。马来西亚、泰国、越南分别部署了MaLLaM、OpenThaiGPT和GreenMind。
拉丁美洲由智利CENIA牵头的12国联盟在2025年9月发布了Latam-GPT,基于法院判决、图书馆档案和学校教科书训练,甚至包含了拉帕努伊语的初始工具。
非洲的Lelapa AI推出了支持斯瓦希里语、约鲁巴语、科萨语等五种语言的InkubaLM。乌克兰在2025年12月宣布了国家级LLM计划。
## 构建方向的根本差异
上面列出的每一个平台,都代表着一套独立的检索生态系统、一套文化信号层级体系和一套社区证明结构——北美优化的AI可见性策略无法触达其中任何一个。
但更深层的观察在于构建方向的不同。
旧的内容策略模型是离心式的:品牌居于中心,创建内容,翻译内容,然后向外推送到各个市场。传统搜索能容纳这种模式,因为爬虫不在乎文化真实性——它们索引存在的一切内容。
这些区域模型是以相反方向构建的。一个政府指令、一个国家语料库、一个特定的文化身份、一种语言的句法逻辑——这才是起点。模型基于"这个地方对自身的了解"来训练。品牌的翻译内容到达时,是作为一个外来物体出现的,没有参数级别的存在感,携带着源语言的句法和文化印记。翻译无法把文化适配逆向植入到一个从一开始就没有你的模型中。
## 嵌入层的质量鸿沟:翻译失效的技术根因
翻译解决不了这个问题,原因不只是战略层面的,更是技术结构层面的——问题就出在嵌入层。
## 什么是嵌入质量差距
AI系统的检索依赖语义相似度计算。内容被编码为向量,查询也被编码为向量,系统通过计算向量空间中的距离来识别匹配项。这些匹配的准确性,完全取决于嵌入模型对目标语言的表征质量。
嵌入模型不是语言中性的。 这是一个经常被忽略的关键事实。保哥把这个问题称为"语言向量偏差"(Language Vector Bias),它实质上是一种文化参数距离问题。
## MMTEB基准的揭示
目前最严格的多语言嵌入质量证据来自ICLR 2025发表的MMTEB(大规模多语言文本嵌入基准)。这项基准覆盖了超过250种语言和500个评估任务,但它自身的任务分布就偏向高资源语言。这意味着什么?你用来评估嵌入架构在其他语言中是否有效的基准本身就是英语加权的。 一个看起来令人放心的排行榜分数,可能衡量的是一个根本不能代表实际使用语言的测试。
## 训练数据的英语霸权
这个结构性原因已被充分记录:Llama 3.1模型系列在发布时被定位为多语言性能的最先进水平,但其150万亿Token的训练数据中,仅有8%被标注为非英语内容。这不是Llama特有的问题,它反映了用于训练大多数基础模型的大规模网络语料库的组成——英语内容在爬取过滤、质量评分和最终数据集构建的每个阶段都被过度代表。
2025年5月发表的一项比较英语和意大利语信息检索性能的研究发现,虽然多语言嵌入模型在通用领域合理地弥合了两种语言之间的差距,但在专业领域——恰恰是企业品牌运营的领域——性能一致性大幅下降。
## 无声的降级:最危险的故障模式
嵌入质量差距不会产生明显的错误。它造成的是静默的检索降级——应该出现的内容没有出现,但没有任何可见的故障信号。仪表板依然是绿色的。只有当你用实际的目标市场语言去测试时,差距才会显现。
这就像一个空气过滤器堵了80%但还在运转——你感觉不到问题,直到你去测量空气质量。
维度 | 英语内容 | 翻译后的非英语内容 |
向量表征精度 | 高(训练数据充分) | 低至中(训练数据不足) |
语义匹配准确率 | 高 | 专业领域显著下降 |
检索召回率 | 正常 | 静默降级,无告警 |
文化语境适配 | 原生 | 携带源语言印记 |
故障可见性 | 不适用 | 极低,难以察觉 |
## 文化参数偏移:比嵌入更难测量的问题
在嵌入层之下,还存在一个更难用工具检测的问题:文化语境塑造了模型对"什么是相关"的基础判断。
2024年Cornell大学研究人员发表的一项研究发现,当五个GPT模型被问及一项广泛使用的全球文化价值观调查中的问题时,回答始终与英语国家和新教欧洲国家的价值观一致。模型没有被要求翻译任何内容——它们被要求推理,而它们的默认参考框架被训练数据的文化组成所塑造。
## "翻译正确"不等于"文化匹配"
假设一个品牌总部不在法国,但在法国运营。他们的内容即使经过专业翻译,很可能也是由不说法语的团队撰写的,携带着非法国市场的权威信号:机构引用方式、比较框架、专业语域。
Mistral基于法语语料库构建,以法国机构关系和法国媒体合作伙伴作为"什么算权威"的基线。一个加拿大品牌的法语内容,法语人类读者可以接受,但它是否能通过一个以原生法语内容为相关性定义标准的模型的门槛,是一个完全不同的问题。
## 即使同是英语也有差异
这个问题甚至不止于英语/非英语的边界。即使在英语内部,区域身份也会影响模型对"原生内容"的判断。爱尔兰英语有独特的词汇和表达方式,澳大利亚口语、新加坡英语、尼日利亚洋泾浜英语都有各自独特的语言指纹。一个美国品牌的内容,对于主要基于英国或爱尔兰语料训练的模型来说,可能读起来就是微妙的"外来物"。
许多时候这些不只是词语的差异,而是压缩的文化信号。直译给你的是"类别",但往往剥离了强度、意图、情感语调、社会期望或共享历史。
如果你想深入了解实体层面的品牌优化如何在不同语言和文化语境中建立机器可理解的身份,保哥之前写过一篇关于实体SEO (https://zhangwenbao.com/entity-seo-guide.html)的深度指南,其中对实体关系网络的构建逻辑有非常系统的阐述——这套逻辑在多语言场景中同样适用,但需要针对每个市场重新构建。
## 语言向量偏差的量化分析
为了让"语言向量偏差"这个概念从抽象变成具体,我们来看几组关键数据和它们背后的技术逻辑。
## 训练Token分布的不均衡
以目前主流的开源基础模型为例:
模型 | 总训练Token数 | 英语占比 | 非英语占比 | 非英语语种覆盖 |
Llama 3.1 | 15万亿 | 约92% | 约8% | 多语种,比例未公开 |
典型大规模网络语料 | 不等 | 60-90% | 10-40% | 取决于爬取策略 |
这种分布意味着,模型对英语词汇、短语、句式的概率分布有着极其精细的理解,而对中文、韩语、阿拉伯语等语言的概率分布理解要粗糙得多。在检索增强生成(RAG)架构中,这种粗糙度直接影响了查询-文档匹配的精度。
## 专业领域的性能断崖
通用领域的多语言嵌入性能差距已经在缩小——这是好消息。但企业品牌通常不在通用领域竞争。当我们聚焦到医疗健康、金融科技、工业制造、法律合规等专业领域时,非英语嵌入的性能会出现断崖式下降。
原因很简单:这些领域的专业术语在非英语训练数据中出现的频率极低,模型没有足够的样本来学习精准的语义表征。一个在英语语境中能准确区分"liability"和"accountability"的模型,在将这两个概念映射到日语或阿拉伯语时,可能会将它们投射到向量空间中几乎相同的位置——这就导致了检索精度的崩塌。
## Tokenizer的隐性歧视
还有一个经常被忽略的技术细节:Tokenizer(分词器)的设计本身就对非英语语言不公平。大多数LLM使用的BPE(Byte Pair Encoding)分词器在英语上能实现高效的Token切分——一个常见的英语单词通常只需要1-2个Token。但对于中文、日语、韩语等语言,同样语义密度的内容可能需要3-5倍的Token数量。
这不只是成本问题(虽然API调用的成本确实会成倍增加),更重要的是,它影响了上下文窗口的有效利用率。当一个检索系统从中文文档中提取的内容段落需要3倍的Token来表征时,同样的上下文窗口能容纳的信息量就少了三分之二。
## 翻译内容为何在AI检索中处于结构性劣势
理解了嵌入层和文化参数的问题后,我们可以更系统地分析翻译内容在AI检索中面临的具体挑战。
## 参数空间中的"外来物体"效应
当一个区域性LLM(比如Naver的HyperCLOVA X)基于本地语料训练时,它内部形成的参数分布反映的是本地内容的统计规律——本地的表达习惯、论述结构、权威引用方式、专业术语搭配。翻译内容到达这个模型时,它在参数空间中的位置会偏离"原生内容"的分布中心。
打个比方:如果把模型的参数空间想象成一张地图,本地原生内容聚集在"市中心",而翻译内容被投射到了"城郊"。检索系统在寻找最相关内容时,自然优先选择离"市中心"更近的内容。
## 权威信号的文化错位
在英语市场,引用《哈佛商业评论》、McKinsey报告、IEEE论文是建立权威性的通用做法。但在中国市场,引用《财新》《36氪》或中科院的研究可能更有权重;在韩国市场,引用《中央日报》或KAIST的研究更能建立可信度。
翻译内容通常保留了源文化的权威引用体系,这些引用在目标市场的AI模型中可能根本没有足够的参数表征——模型"认识"这些来源的程度远不如本地权威来源。
## 社区信号的跨市场断裂
AI搜索越来越依赖社区共识信号来判断内容的可信度和相关性。但驱动不同市场AI检索的社区平台完全不同:
市场 | 主要社区信号来源 | 英语策略覆盖度 |
英语市场 | Reddit、Quora、X | 100% |
中国市场 | 小红书、知乎、微博 | 0% |
韩国市场 | Naver Café、Naver知识iN | 0% |
日本市场 | Yahoo知恵袋、价格.com | 接近0% |
巴西市场 | Reclame Aqui、Reddit BR | 极低 |
一个品牌可能在英语市场拥有出色的社区信号——Reddit上的正面讨论、Quora上的专家回答——但这些信号对韩国市场的Naver AI Briefing没有任何影响。
## 实操策略:如何构建真正的多语言AI可见性体系
说了这么多问题,下面进入解决方案。保哥要先说一句大实话:截至目前,企业级非英语AI可见性策略的严格案例研究还不存在。这个领域太新了,严谨的案例需要明确的基线、可衡量的干预、受控的时间框架和独立验证的结果。这不是等待的理由,而是在执行时保持"什么是已验证的、什么是方向性的"清醒认知的理由。
## 第一步:按语言×市场×平台做AI可见性审计
停止全球化的统一审计。 英语环境下的查询表现,对日语市场的表现没有任何参考价值。全球AI平台上的表现,对Naver AI Briefing中的表现也说明不了什么。
审计必须在市场层面进行,使用由母语者构造的本地语言查询——不是从英语翻译过来的查询。
具体操作步骤:
- 确定目标市场的AI平台清单。 对每个目标市场,列出用户实际使用的AI搜索工具。不要假设全球统一——中国市场是文心一言+豆包+通义千问,韩国是Naver AI Briefing,法国要考虑Mistral的Le Chat。
- 招募母语者构造测试查询。 千万别图省事用翻译工具把英语查询译过去。母语者需要用本地用户实际使用的表达方式来构造查询,包括俚语、口语化表达和本地特有的搜索习惯。
- 在每个平台上执行查询并记录。 记录你的品牌/内容是否出现、出现在什么位置、被引用了多少、引用的是哪个页面。
- 与英语市场的基线对比。 量化差距的大小和性质——是完全缺失,还是有出现但排位靠后,还是出现了但信息不准确。
如果你需要一个系统化的检测框架来评估内容在AI搜索中的可引用性,可以借助GEO内容分析优化工具 (https://zhangwenbao.com/tools/geo-optimizer.php)来进行多维度扫描,它能帮你从内容权威性、内容结构、AI可引用性等维度获得量化评分。
## 第二步:绘制每个目标市场的AI平台地图
上一节中列出的全球AI平台清单是一个起点,但这个版图每个季度都在变。优化工作——结构化数据、内容API、实体信号——需要朝着实际服务每个市场的平台去构建。
需要持续追踪的关键维度:
- 该市场的主导AI搜索平台是什么? 市场份额、用户增长趋势、功能更新节奏。
- 这些平台的检索机制是封闭还是开放? Naver是封闭生态,百度相对半开放,Mistral更开放。这决定了你的内容架构需要如何适配。
- 这些平台是否支持开放网络爬取? 如果支持,llms.md和结构化数据可以直接复用。如果不支持,你需要找到进入这些平台内容生态的替代途径。
- 该市场的社区共识信号主要来自哪里? 不同市场的用户在做购买决策前"去哪里验证"的习惯完全不同。
## 第三步:构建本地化内容,而不是翻译内容
这是整个策略中最核心也最难执行的一步。之前讨论的四层机器可读内容架构在每种语言中都适用,但翻译版本的英语内容API不等于本地化的内容API。
"本地化"和"翻译"的本质区别:
维度 | 翻译 | 本地化 |
实体关系 | 保留源文化的实体网络 | 重建目标市场的实体网络 |
权威信号 | 引用英语世界的权威来源 | 引用目标市场认可的权威来源 |
社区证明 | 依赖英语社区的讨论和评价 | 在目标市场的社区中建立原生讨论 |
表达方式 | 语法正确但语感偏"外来" | 符合本地用户的自然表达习惯 |
案例和数据 | 英语市场的数据和案例 | 目标市场的数据和案例 |
文化参照系 | 英语文化的类比和隐喻 | 目标文化的类比和隐喻 |
具体操作要点:
- 每个目标市场配备母语内容负责人。 不是翻译,是能够从零构建内容策略的本地专家。他们需要理解目标市场的行业术语、竞争格局、用户搜索行为和社区生态。
- 重建实体关系图谱。 你的品牌在目标市场中与哪些本地实体关联?竞品是谁?行业组织有哪些?媒体关系如何建立?这些都需要从目标市场的视角重新构建。
- 在本地社区平台上建立原生存在感。 如果目标市场是中国,你需要在小红书和知乎上建立品牌内容;如果是韩国,需要在Naver Café和Naver Blog上运营。
- 本地化结构化数据中的实体和属性。 Schema标记不只是翻译文本字段——Organization、Product、FAQPage等Schema的属性值需要反映目标市场的命名惯例、分类体系和属性标准。
## 第四步:建立多语言内容的技术基础设施
保哥根据实际操作经验,总结了多语言AI可见性优化在技术层面需要解决的几个核心问题:
Hreflang标签的精确实现。 这是多语言SEO的基础,但在AI可见性时代,它的重要性更加突出。正确的hreflang (https://developers.google.com/search/docs/specialty/international/localized-versions?hl=zh-cn)实现不仅帮助传统搜索引擎理解页面的语言关系,也为AI爬虫提供了语言版本的映射信息。如果你需要快速生成规范的hreflang标签代码,可以使用Hreflang标签生成器 (https://zhangwenbao.com/tools/hreflang-generator.php)来确保格式正确且覆盖完整。
针对不同AI平台的爬虫访问策略。 不同AI平台使用不同的爬虫来索引内容。你的robots.txt (https://zhangwenbao.com/tools/robots-generator.php)和爬虫访问策略需要分别考虑:GPTBot(OpenAI)、Google-Extended(Google)、ClaudeBot(Anthropic)以及各区域AI平台的爬虫。特别要注意,某些区域AI平台的爬虫可能使用不同于国际平台的User-Agent字符串。
多语言内容API的独立构建。 如果你在英语市场部署了llms.md或其他机器可读的内容API,不要简单地翻译这些文件。每个语言版本的内容API应该独立构建,包含:本地化的品牌定位描述、目标市场的核心关键词和查询模式、本地权威来源的引用、目标市场的案例和数据。
多语言Schema标记的完整性检查。 确保每个语言版本的页面都包含完整的Schema标记,且标记中的属性值已本地化。特别注意inLanguage属性的正确设置——中文用zh-CN,韩语用ko,日语用ja等。
## 第五步:接受"英语-英语"也不是单一市场
同样的结构性逻辑也适用于英语内部。一个美国品牌的内容可能携带着美式英语的句法和文化特征,对于主要基于英国、爱尔兰或澳大利亚语料训练的模型来说,这些特征读起来就是微妙的"外来物"。
区域英语不是可以忽略的四舍五入误差,它是同一底层原理在更小尺度上的体现。如果你的业务覆盖多个英语市场(美国、英国、澳大利亚、新加坡、南非等),内容策略也应该考虑区域适配。
## 进阶策略:在区域AI模型中建立参数级存在感
前面的五步解决了"从无到有"的问题。接下来这些进阶策略,目标是让你的品牌在区域AI模型中真正获得"参数级别的存在感"——而不仅仅是被检索到。
## 参与区域AI模型的训练数据生态
区域AI模型的训练数据来源通常包括:本地新闻媒体、学术论文、政府文档、行业出版物和高质量社区内容。如果你能让品牌内容进入这些数据来源的上游,就有机会在模型的下一次训练迭代中获得参数级别的嵌入。
实操路径:
- 在目标市场的权威行业媒体上发表深度内容(不是广告软文,是有价值的行业分析)
- 与目标市场的大学或研究机构合作发布行业白皮书
- 参与目标市场的行业标准制定和行业协会活动
- 在目标市场的开源社区和技术论坛中贡献高质量内容
## 针对不同AI引擎定制优化
保哥之前在分析AutoGEO (https://zhangwenbao.com/ai-search-engine-preferences-autogeo.html)论文时提到过一个关键发现:任意两个AI引擎之间的内容偏好规则重叠率仅为30%-50%。这意味着针对单一AI引擎的优化策略,在另一个引擎上可能只有一半甚至更少的效果。如果你想更系统地了解不同AI引擎的偏好差异及如何做差异化优化,可以参考保哥写的AI搜索引擎偏好规则解析 (https://zhangwenbao.com/ai-search-engine-preferences-autogeo.html)这篇文章。
在多语言场景中,这个问题被进一步放大——你不仅要考虑引擎间的偏好差异,还要叠加语言间的偏好差异。
实操建议:
- 为每个目标市场确定1-2个最重要的AI平台,优先做深度优化
- 建立跨引擎基准测试流程,定期检测内容在不同引擎中的表现变化
- 使用"通用规则+定制规则"的双层策略:通用规则覆盖所有引擎,定制规则针对特定引擎的独特偏好
## 建设多语言品牌知识图谱
在实体SEO的基础上,为每个目标市场构建独立但互联的品牌知识图谱:
- 确定核心实体。 品牌自身、关键产品/服务、核心管理层、重要里程碑。
- 建立本地关联实体。 在目标市场中,品牌与哪些行业实体、地理实体、事件实体存在关联?
- 部署多语言结构化数据。 使用Organization、Product、Person等Schema类型,为每个语言版本构建独立的结构化数据层。
- 建立跨语言实体连接。 使用owl:sameAs或schema.org的sameAs属性,将不同语言版本中的同一实体显式关联起来。
## 避坑指南:多语言AI可见性优化中的常见误区
## 误区一:"机器翻译质量已经很好了,足够用了"
机器翻译(包括GPT-4级别的AI翻译)确实在流畅度和准确度上取得了巨大进步。但"流畅且准确的翻译"和"能在目标市场AI模型中获得高检索优先级的内容"是两个完全不同的目标。翻译解决的是语言转换,不解决文化适配、权威信号重建和社区信号缺失的问题。
## 误区二:"先把英语市场做好,非英语市场以后再说"
这种思维在传统SEO时代还说得过去——搜索引擎索引存在的一切,你总能追赶。但在AI模型的参数空间中,先入者优势更加显著。模型的训练数据有截止日期,如果你的竞品在本轮训练周期中已经在目标市场的权威数据源中建立了存在感,你需要等到下一轮训练才有机会追赶——而训练周期可能是半年到一年。
## 误区三:"雇一个翻译就等于做了本地化"
翻译只是本地化的一小部分。真正的本地化需要:理解目标市场的AI平台生态、掌握本地社区平台的运营规则、具备本地行业知识和人脉资源、能够构建本地化的权威信号体系。这需要的不是翻译,而是本地市场的内容策略师。
## 误区四:"结构化数据是通用的,翻译字段值就行了"
Schema标记的结构确实是全球通用的,但里面的属性值承载着文化信息。产品分类体系、服务描述方式、价格显示格式、评价标准等,都需要根据目标市场的惯例来调整。
## 误区五:"一套全球AI可见性策略就够了"
这是最根本的误区,也是本文要传达的核心信息。在英语环境中开发的框架是全球市场的一个切片的起点。将它们推广到全球,需要把每个主要市场作为一个独立的优化问题来对待:不同的平台、不同的嵌入架构、不同的文化检索逻辑、不同的信任方向。
## 多语言AI可见性优化执行清单
为了让上述策略可以直接落地执行,保哥整理了一份按优先级排序的执行清单:
第一优先级(立即执行):
- 列出所有目标市场的AI搜索平台清单
- 在每个目标市场招募母语测试者
- 用本地语言查询在各平台上检测品牌可见性 (https://zhangwenbao.com/content-cited-brand-not-recommended.html),建立基线数据
- 检查现有多语言页面的hreflang实现是否正确完整
- 审计各AI平台爬虫的访问权限(robots.txt配置)
第二优先级(30天内启动):
- 为核心目标市场制定独立的内容策略(而非翻译策略)
- 招聘或签约目标市场的母语内容专家
- 在目标市场的主要社区平台上建立品牌官方账号
- 为每个语言版本独立构建Schema结构化数据
- 建立跨引擎基准测试流程
第三优先级(90天内推进):
- 在目标市场的权威行业媒体上发布深度内容
- 与目标市场的学术/行业机构建立合作关系
- 构建多语言品牌知识图谱
- 部署多语言内容API(llms.md等)
- 建立季度性的AI可见性审计机制
## 常见问题
## 多语言AI可见性优化和传统多语言SEO有什么区别?
传统多语言SEO主要关注翻译质量、hreflang标签实现和本地化关键词研究,目标是在传统搜索结果中获得排名。多语言AI可见性优化在此基础上增加了三个关键维度:第一,需要针对每个市场的AI搜索平台做定向优化,而不仅仅是Google;第二,需要解决嵌入层的语言向量偏差问题,这要求内容不只是翻译正确,还要在目标市场的AI模型参数空间中具有足够的"原生感";第三,需要在目标市场的社区平台上建立原生的社区信号,因为AI搜索越来越依赖社区共识来判断内容的可信度。
## 中小企业没有资源在每个市场都做深度本地化,应该怎么办?
优先选择1-2个最重要的非英语目标市场,集中资源做深度本地化。选择标准包括:市场规模、现有业务量、竞品在该市场的AI可见性水平。对于其他市场,可以先做基础的技术基础设施准备(正确的hreflang、多语言Schema、AI爬虫访问权限),待资源允许时再逐步深入。同时,确保不要用低质量的机器翻译内容去填充非英语页面——没有内容比错误的内容要好。
## 如何判断翻译内容在目标市场的AI搜索中表现如何?
最直接的方法是执行本地语言的AI搜索测试。招募目标市场的母语者,让他们用自然的本地表达方式在当地主流AI搜索平台上查询与你的业务相关的问题。记录你的品牌/内容是否被引用、被引用的频率、引用的准确度、以及在AI回答中的位置。将这些数据与英语市场的基线数据对比,就能量化翻译内容的AI可见性折损程度。建议至少测试20-30个核心查询,覆盖不同的搜索意图类型。
## 区域AI模型是否会长期存在?还是最终会被全球化的模型取代?
从当前的趋势来看,区域AI模型不仅不会消失,反而在加速发展。驱动因素包括数据主权法规的收紧(如EU AI Act)、国家安全考量、文化和语言多样性的需求、以及本地企业和政府对AI供应链自主可控的诉求。虽然全球化模型(如GPT系列)会持续改善多语言能力,但它们在理解特定文化语境、满足本地监管要求方面,很难达到区域模型的精细度。更可能的未来是:全球模型和区域模型并存,不同场景下用户会选择不同的工具。
## 针对中国市场的AI可见性优化需要注意哪些特殊问题?
中国市场有几个独特的挑战:第一,所有主流国际AI平台在中国不可用,你必须针对百度文心一言、豆包、通义千问等本地平台做优化。第二,中国互联网的内容生态相对封闭,微信公众号、小红书、知乎等平台的内容不一定能被所有AI平台爬取。第三,中文的分词特性使得Tokenizer效率和语义表征精度受到影响。第四,中国用户的搜索行为和信任信号体系与西方市场有本质差异——品牌背书的权重结构完全不同。第五,政策合规要求需要特别关注,包括数据存储、内容审核和AI服务的运营资质。
## 英文内容通过机器翻译发布到非英语页面,对SEO是否有负面影响?
如果机器翻译的质量足够高且经过人工审校,对传统SEO的直接负面影响有限。但对AI可见性的影响可能是显著的——机器翻译的内容在文体特征、表达习惯和文化语境上往往保留着源语言的印记,这会降低内容在本地AI模型检索中的匹配度。更大的风险在于,低质量的翻译内容可能损害品牌在目标市场用户心中的专业形象,而这种负面口碑一旦进入社区讨论和用户评价中,会被AI系统作为负面信号纳入检索判断。
## 如何说服管理层为多语言AI可见性优化投入预算?
关键是量化"不做"的机会成本。首先展示目标市场中AI搜索的用户规模和增长趋势数据。然后通过竞品分析展示竞争对手是否已经在目标市场的AI搜索中获得了可见性。最后通过小规模的本地化测试(比如先在一个市场做3个月的深度本地化),用实际数据证明优化前后的AI可见性差异。将这个差异转化为潜在的流量价值和收入机会,用商业语言而非技术语言来呈现。
曾经愿意容忍"翻译优先"内容策略的缺陷的市场,现在正越来越多地在为它们原生构建的平台上运转,而翻译内容与原生内容之间的差距正在加速扩大。
这就是"语言向量偏差"问题。它不是一个技术细节,而是AI可见性领域中最重要的、我们还没有认真对待的结构性挑战。
现在开始着手弥合这个差距的品牌,不是在追赶一个已解决的问题——它们是在提前布局一个全行业尚未真正动手的领域。
## 权威参考资料
## 中文简繁转换器怎么用?台湾香港用语本地化与那个会转错的“头发”
- URL:https://zhangwenbao.com/chinese-converter-simplified-traditional-localization-guide.html
- 分类:国际SEO
- 发布:2026-03-15 | 更新:2026-03-15
- 摘要:中文简繁转换器是一款做简体与繁体互转的国际SEO工具,支持简转繁、繁转简和自动检测方向三种模式,外加标准、台湾、香港三种地区选项。它内置约2700字的简繁对照表,转换分两层:先按地区词库整词替换(软件转軟體、网络转網路),再逐字查表转字形。
- 关键词:SEO,hreflang,国际SEO
> **TLDR**:摘要:这个中文简繁转换器,靠一张内置的约2700字简繁对照表加两套地区词库(台湾52个词、香港19个词)来工作,支持简转繁、繁转简和自动检测方向三种模式。它的转换分两层:先按词替换地区惯用语(软件转軟體、网络转網路这种),再逐字查表替换。但它有两个必须认清的天花板:一是它对“一简对多繁”的字是写死的一对一映射,不看上下文,所以“理发”会被错转成“理發”(正确应是“理髮”);二是它的地区词库小到只能覆盖最常见的几十个词,远不是OpenCC那种生产级方案。所以它是个很顺手的繁体内容初稿生成器,能帮你快速出一版台湾或香港版文案,但绝不能直接上线——一简多繁的歧义字和没收录的本地词,必须靠人工校对兜住。把它当初稿工具,配合人工审核用,它就好用。
> 摘要:这个中文简繁转换器,靠一张内置的约2700字简繁对照表加两套地区词库(台湾52个词、香港19个词)来工作,支持简转繁、繁转简和自动检测方向三种模式。它的转换分两层:先按词替换地区惯用语(软件转軟體、网络转網路这种),再逐字查表替换。但它有两个必须认清的天花板:一是它对“一简对多繁”的字是写死的一对一映射,不看上下文,所以“理发”会被错转成“理發”(正确应是“理髮”);二是它的地区词库小到只能覆盖最常见的几十个词,远不是OpenCC那种生产级方案。所以它是个很顺手的繁体内容初稿生成器,能帮你快速出一版台湾或香港版文案,但绝不能直接上线——一简多繁的歧义字和没收录的本地词,必须靠人工校对兜住。把它当初稿工具,配合人工审核用,它就好用。
出海如果要做繁体市场——台湾、香港,还有散布全球的海外华人——内容本地化里有一道绕不过去的关:简体转繁体。很多人以为这就是个“字形切换”,把简体字换成繁体字就完事了。真做起来才发现没这么简单:同一个简体字可能对应好几个繁体字,台湾人和香港人用的词还不一样,软件在台湾叫“軟體”、在香港叫“軟件”——这些都不是单纯换字能解决的。
这个中文简繁转换器,就是想帮你处理这道关。它内置了简繁对照表和地区词库,能一键把简体内容转成繁体,还能区分台湾用语和香港用语。这篇就把它的转换机制、它内置的字表和词库到底有多大、它在哪些地方会转错,连同简繁转换和国际SEO的真实关联,一次性讲清楚——重点是它那两个天花板,关系到你能不能放心用它的输出。
## 简体转繁体,为什么不只是“换个字形”那么简单?
得先把这件事的难度讲透,你才明白这个工具在解决什么、又解决不了什么。简繁转换的复杂,藏在三个层次里。
第一层是“一简对多繁”。简化字方案里,好几个原本不同的繁体字,被合并成了同一个简体字。最经典的是“发”——它在繁体里对应两个字:表示“出发、发展”的“發”,和表示“头发、毛发”的“髮”。简体统一写成“发”,但转回繁体时,“发展”要转成“發展”,“头发”却要转成“頭髮”。再比如“里”对应“裡”(裡面)和“里”(公里)、“干”对应“乾”(乾燥)、“幹”(幹活)和“干”(干涉)。要转对,机器得看懂上下文——这正是难点所在。
第二层是“地区用词差异”。就算字形转对了,词也未必地道。同一个东西,大陆、台湾、香港的叫法常常三套:大陆的“软件”,台湾叫“軟體”,香港叫“軟件”;大陆的“打印机”,台湾叫“印表機”;大陆的“博客”,台湾叫“部落格”。光做字形转换,“软件”只会变成“軟件”——这在香港对,在台湾就不地道。真正的本地化,得连用词一起换。
第三层是“异体字和罕用字”。繁体里还有大量异体字、罕用字,专业内容(中医、法律、古籍)里尤其多。这一层,绝大多数轻量工具都覆盖不到。把这三层摆清楚,你就有了一把尺子,去衡量这个工具走到了哪一步。
## 这个转换器到底支持哪几种转换模式?
它给了三种工作模式。前两种是方向:简转繁(把大陆简体转成繁体)和繁转简(把港台繁体转回大陆简体)。第三种是自动检测——你把一段不确定的文本丢进去,它会统计文本里简体字和繁体字的数量,按比例判断这段大体是简体还是繁体,再自动决定该往哪个方向转。
在转换方向之外,它还有一个地区选项,决定要不要套地区词库:标准模式只做字形层面的转换、不替换用词;台湾模式会额外套上台湾用语词库;香港模式套香港用语词库。这就是说,你想要的不是“随便一种繁体”,而是“台湾人读着地道的繁体”时,得选台湾模式,让它在转字形的同时把“软件”也换成“軟體”。
这里要先点破一个宣传用语:界面把自动检测叫“智能检测”、把词库替换叫“智能替换”。但代码里并没有什么“智能”——所谓智能检测,就是数一数简繁字各有多少个、比个大小;所谓智能替换,就是拿词库做字符串查找替换。没有任何自然语言理解的成分。这不影响它好不好用,但你心里得清楚它的“智能”是营销话术,不是真有NLP。
## 它是靠一张多大的字表、怎么完成转换的?
把转换机制拆开看,它的能力边界就清楚了。它的核心,是一张内置的简繁对照表,大约2700个简繁字对,从“万→萬”一直到“龟→龜”,覆盖了GB2312和Big5里的绝大多数常用字。繁转简方向的表,是把这张简转繁表反转生成的,所以它实际维护的是一张双向表。
转换过程分两层,顺序很关键。第一层是按词替换:工具先拿地区词库里的词,在文本里做整词替换,而且是按词的长度从长到短排序后再替换——这样能避免“短词先被换掉、导致长词匹配不上”的问题。第二层是逐字替换:词替换完,剩下的文本再一个字一个字查那张2700字的对照表,逐字转换。
这个“先词后字”的两层设计,是它做对的地方——有了词层,“软件”能被整个换成“軟體”,而不是逐字变成没人用的“軟件”(在台湾语境下)。但请注意,这两层都只是机械的查表和字符串替换,没有分词、没有语义分析。词库里收了的词能换对,没收的词就只能退回逐字层,按那张一对一的字表硬转——而这,正是它出错的根源。
说到字表规模,得诚实对比一下。它的约2700字,应付日常常用字够用,但跟生产级的开源方案比,差着量级。专门做简繁转换的 OpenCC开源项目 (https://github.com/BYVoid/OpenCC),内置的词条以万计,支持字级、词级转换和地区惯用语,还区分大陆、台湾、香港多套标准。这个工具更像是OpenCC思路的一个轻量缩小版——能转,但覆盖面和精度都是另一个段位。
## “头发”被转成“頭發”,这种错是怎么来的?
这是全篇最该记牢的一节,直接决定你能不能信它的输出。前面说过简繁转换最难的是“一简对多繁”,需要看上下文才能选对繁体字。而这个工具,恰恰在这一层是缴械的。
它那张对照表,是写死的一对一映射。“发”在表里只映射到一个繁体字(“發”),不管上下文。于是“发展”转成“發展”是对的,但“头发”会被转成“頭發”——大错,正确应该是“頭髮”。同样,“理发”会错成“理發”(应为“理髮”)、“干燥”会错成“幹燥”或“干燥”(应为“乾燥”,看它表里映射的是哪个)。凡是落在“一简对多繁”上的字,只要文本里用的不是它映射的那个义项,就会转错。
为什么会这样?因为它的逐字层就一行逻辑:查表,命中就替换成表里那个唯一的繁体字,查不到就原样保留。没有任何上下文判断的余地。词库层能挡掉一部分——如果“头发”恰好作为一个词被收进了词库,就能被整体换对,但它的词库只有几十个词,绝大多数含歧义字的词都没收,只能退到逐字层去碰运气。
工具自己其实也承认了这一点——它的常见问题里写着“少数一简对多繁的情况,本工具使用最常见的对应关系,特殊语境可能需要人工校对”。这是它难得的诚实。但作为使用者,你要把这句话的分量放大:凡是繁体输出,含“发、里、干、后、表、面、松、回、范”这类高频歧义字的地方,都得逐一人工核对,不能闭眼信。
## 台湾“軟體”、香港“軟件”,它的地区词库够用吗?
地区用词,是繁体本地化里仅次于歧义字的第二个坑。这个工具有两套地区词库,我们得诚实看看它们的规模。
台湾词库大约52个词,收的是最典型的科技和生活用语:軟體、硬體、網路、資訊、程式、伺服器、印表機、滑鼠、部落格、預設、記憶體、智慧(智能)、行動電話、計程車(出租车)、捷運(地铁)、馬鈴薯/番薯(土豆)等等。香港词库更小,大约19个词:軟件、網絡、的士(出租车)、巴士(公交车)、三文治(三明治)、朱古力(巧克力)、芝士(奶酪)这类。
这两套词库,方向是对的——它确实抓住了“软件”在台港的不同叫法、抓住了一批高辨识度的本地词。但规模诚实讲,是远远不够的。台湾和香港的本地用词差异,真实数量是成百上千的,涉及科技、生活、教育、医疗、法律方方面面。52个和19个,只能覆盖最表层、最常被提起的那一小撮。大量日常词——很多专业术语、机构名、习惯表达——它都没收,只会按字形原样转过去,读起来就是“字是繁体,但味道是大陆的”。
所以对地区词库,正确的期待是:它能帮你把最显眼的那几十个“一眼就露馅”的大陆词换掉,让初稿的本地化程度上一个台阶;但要做到母语者读着完全地道,靠这点词库远远不够,后面必须有本地化人工或更专业的词库补上。它解决的是“别太露怯”,不是“完全地道”。
## 繁转简的方向,会不会也踩一样的歧义坑?
前面讲的歧义,都是简转繁方向的。反过来——繁转简——是不是就太平无事了?大体上轻松很多,但也不是完全没坑。
繁转简之所以相对简单,是因为方向是“多对一”:好几个繁体字(發、髮)合并成同一个简体字(发),机器只要把繁体字映射回那个唯一的简体字就行,不存在“该选哪个”的纠结。所以“頭髮”转“头发”、“出發”转“出发”,都不会出错。这是简化字方案设计上“化繁为简”带来的天然便利。
但繁转简也有它自己的小麻烦。第一是地区词反向的问题:一篇台湾繁体内容里写的是“軟體”“網路”“部落格”,繁转简如果只做字形转换,会得到“软体”“网路”“部落格”——字是简体了,但词还是台湾说法,大陆用户读着别扭。要转成大陆地道的“软件”“网络”“博客”,同样需要地区词库的反向支持,而这个工具的词库主要是为简转繁配的,反向覆盖更弱。
第二是异体字归并:繁体里一些异体字,简体可能归并也可能保留,这个工具的常用字表未必处理得周全。所以繁转简虽然比简转繁省心,拿来做大陆市场的正式内容,仍然建议人工扫一遍用词,别假设“转成简体就万事大吉”。
## 台港市场和海外华人市场,繁体策略是一回事吗?
做繁体本地化,很多人脑子里只有一个笼统的“繁体市场”,其实它至少分成性格很不一样的几块,策略不能一刀切。
台湾是最大的繁体内容市场,用的是台湾正体,用词自成一套(軟體、網路、計程車),对本地化的地道程度要求高——用词一露大陆味,信任就打折。香港用繁体,但用词和台湾又不一样(軟件、的士、巴士),而且香港的书面语和口语差距大,正式内容用书面繁体、贴近生活的内容可能掺粤语词。这两块,正是工具那两套地区词库想覆盖的,但前面说了词库太小,只能打个底,地道还得靠人。
还有一块常被忽略的,是散布全球的海外华人——北美、东南亚的华人社区。他们里繁简都有读者,且很多人简繁都能读,对用词的地区敏感度反而没台港本地那么苛刻。面向这块市场,繁体内容的“字形正确”比“用词百分百地道”更要紧。把这三块分清楚,你就知道工具的输出该用到什么程度:发台湾、香港正式内容,工具初稿后必须重度人工本地化;发面向泛华人社区的内容,工具初稿加一遍歧义字校对,可能就够用了。市场不同,对工具输出的打磨深度也不同。
## 转换之外,繁体站还有哪些容易被忽略的本地化细节?
把文字转成繁体,只是繁体站本地化的一部分,还有些藏在文字之外的细节,不处理同样会露怯。
一是数字、日期、货币格式。台湾常用民国纪年和特定的日期写法,货币是新台币(写法和人民币、港币都不同),香港用港币。这些光靠简繁转换器换不了,得在内容层面单独适配。二是标点和排版习惯。繁体内容的标点用法、甚至直排横排的偏好,和简体有细微差异,正式出版物尤其讲究。三是本地化的例子和指代。一篇面向大陆写的内容,里面举的例子、提到的平台、引用的场景,可能在台港根本不适用——把“微信”“支付宝”这种大陆专属的指代直接搬到台湾内容里,就很违和,得换成当地对应的东西。
这些细节,工具一个都管不了——它只动字形和少量地区词。但它们恰恰是“机翻味”和“真本地化”的分水岭。所以正确的认知是:简繁转换器解决的是本地化里“文字系统适配”这一层,它是必要的第一步,但远不是全部。文字转对了,上面这些格式、习惯、指代的本地化跟不上,繁体站照样让本地用户一眼看出“这是大陆做的”。把工具的活和这些工具管不到的活分清楚,你才能对“做一个真正地道的繁体站要花多少功夫”有个不被低估的预期。
## 一句话判断:你到底该不该用这个工具?
把前面所有的能力和边界收成一个判断框架,帮你快速决定要不要用它、怎么用它。
如果你的需求是“快速出一版繁体初稿、后面有人工校对兜底”——比如做台港市场的内容、需要先有个繁体底子再打磨——那它很适合,是个省力的起点。
如果你的需求是“一键转出能直接上线的、母语级地道的繁体内容”,那它满足不了,你要的是生产级方案加本地化人工,别指望这个轻量工具。如果你要处理的是专业领域(中医、法律、古籍)的精密繁体,它的常用字表和小词库撑不住,必须上专业方案加领域专家。
一句话:把它当“初稿生成器加学习工具”,它好用;当“定稿方案”,它会坑你。需求对上了,它就是趁手的;需求错配了,再好的工具也是错的选择。
## 关键词的简繁差异,到底怎么落到选词和页面布局上?
前面提了简繁关键词搜索量不同,这里把它落到具体的操作上,因为这才是简繁转换对SEO最实在的影响。
核心认知是:对搜索引擎来说,“软件”“軟體”“軟件”是三个不同的词。一个简体页面把“软件”机械转成繁体的“軟件”,它就只匹配到搜“軟件”的香港用户,搜“軟體”的台湾用户和搜“软件”的大陆用户都对不上。所以做多地区中文SEO,第一步不是急着转换,而是先按地区做关键词调研——搞清楚目标市场的人到底用哪个词搜、搜索量多大,再决定页面主打哪个词。这个工具的地区词库能提示你“台湾叫軟體、香港叫軟件”这个差异的存在,但具体哪个词搜索量大、值得做,得靠关键词工具去查,工具替代不了调研。
调研定了主词,落到页面上还有几个讲究。标题和正文的核心词要统一用目标市场的说法——做台湾站,标题、H1、正文就一致用“軟體”,别简繁词混着来,否则相关性信号就散了。但可以适度兼顾变体:在正文自然的地方带上“軟件”这种其它地区的说法,能多覆盖一点搜索面,前提是别堆砌、别读着别扭。这套“主词统一、变体兼顾”的布局,靠的是对地区用词的清楚认知,而工具帮你把这层差异摆到了台面上。
反过来也提醒一个常见错误:别用一个简单的简繁转换,就以为做完了多地区SEO。把简体站整站转成繁体挂上去,字是繁体了,但如果关键词没按地区重新选、用词没本地化,那它在台港的搜索结果里依然竞争不过本地内容。简繁转换是多地区中文SEO的“字形适配”这一环,必要但不充分;真正决定排名的,是建立在地区关键词调研之上的选词和内容质量。把工具的定位摆正——它解决字形,选词靠调研,地道靠人工——你的多地区中文SEO才不会停在“转了个字形”的表面功夫上。
## 自动检测方向,它到底靠什么判断、什么时候会判错?
自动检测是个方便功能——你不确定一段文本是简是繁,丢进去让它自己判方向。但用之前得知道它的判断有多“聪明”,免得被它带偏。
它的判断逻辑,说穿了很朴素:扫一遍文本,数出现了多少个“只在简体里有”的字、多少个“只在繁体里有”的字,哪边多就判成哪边,再往相反方向转。比如简体字明显多,它就判这是简体、给你转繁体。这套统计法在“纯简体”或“纯繁体”的长文本上很可靠,几乎不会错。
它会犯迷糊的,是几类边界情况。一是简繁混排的文本:如果一段话里简繁各半(比如复制粘贴拼凑出来的),它的比例统计会摇摆,可能判错方向。二是极短的文本:只有几个字、又恰好都是简繁通用的字(很多常用字简繁同形),它没有足够样本去统计,容易瞎猜。三是本身就有歧义的内容。所以自动检测适合“我手上一大段文本,懒得自己看是简是繁”这种省事场景;但凡涉及正式、重要的转换,建议你自己确认方向、手动选简转繁还是繁转简,别把方向判断这种基础决策完全甩给一个数字数的统计逻辑。
## 转换前后的差异对比和字符统计,能帮上什么忙?
这个工具除了转换本身,还附带两个辅助功能,用好了能明显提高校对效率。第一个是差异高亮:转换后,它会把发生了改动的字标出来。这个功能在校对歧义字时特别有用——你不用把成百上千字的繁体输出从头看一遍,只需重点盯那些被标出来“改动过”的字,逐个确认繁体选对没有。前面说过含“发、里、干”这类歧义字最容易转错,差异高亮正好帮你快速定位到这些“动过手脚”的地方。
第二个是字符统计:它会数出文本里简体字、繁体字、通用汉字、非汉字各有多少。这个数据的用处,一是帮你判断转换是否彻底(转完繁体后,如果统计里还残留一堆简体字,说明有字没转到,可能是表里没收的字);二是配合自动检测,让你对“这段文本到底简繁比例如何”有个量化的认识。把这两个辅助功能用起来,校对就从“大海捞针逐字看”变成“按图索骥盯改动”,效率差很多。它们不解决转换精度问题,但能让你更快地发现并修正那些精度不够导致的错误。
## 一个汉方草本护肤出海站,是怎么用它做台湾繁体初稿的?
讲个具体场景,比干说规则更能看清它的用法和边界。我们团队接触过一个做汉方草本护肤(主打植物成分、东方养肤概念)的出海品牌,主站是简体内容,要新开一个面向台湾市场的繁体站。台湾对这类东方养生概念的接受度高,是块好市场,但内容本地化的工作量不小——几十篇产品文案、成分科普、品牌故事,都得从简体转成台湾人读着地道的繁体。
他们的做法,是“工具出初稿、分层人工校”。第一步,把简体原文按“简转繁 + 台湾模式”批量过一遍,几十篇文案几分钟就出了一版繁体初稿,“软件层面”的字形转换和最显眼的地区词替换(虽然护肤内容里科技词不多,但“信息”转“資訊”“文件”转“檔案”这类还是被换掉了)一次到位,省去了从零逐字改的苦工。
第二步是分层校对,这步最见功夫。第一层先借差异高亮,集中核对歧义字——护肤文案里高频出现的“面”(面膜、面部)、“发”(如果涉及护发)、“干”(干燥、干性肌)这些都是一简多繁的重灾区,得逐个确认。果然,初稿里“干燥”“干性”这类被工具按写死映射转成了不对的繁体,得手动改成台湾惯用的写法。第二层是请台湾本地的兼职编辑过一遍用词和语感——成分名、养肤术语、广告话术里有大量工具词库覆盖不到的本地表达,这一层必须靠母语者。
这个案例清楚地说明了工具的卡位:它把最枯燥的字形转换和最基础的地区词替换包了,让本地化不用从一张白纸开始;但歧义字消解和地道语感这两件真正决定繁体内容质量的事,一个靠人工借差异高亮逐字核、一个靠本地母语者把关,工具都替代不了。如果当时图省事,把工具初稿直接上线,那些转错的“干燥”“面部”就成了挂在产品页上的硬伤,反而砸了“东方养肤”想立的专业人设。工具是省力的起点,不是放心的终点。
## 简繁双版本站,目录和URL结构该怎么搭才不打架?
把内容转好只是一半,简繁双版本要在一个站里和平共处、还能被搜索引擎正确理解,结构上有讲究。这部分超出了工具本身,但和它的输出怎么落地直接相关,值得讲清。
主流的做法是用独立的子目录区分语言版本,比如简体放 /zh-hans/、繁体放 /zh-hant/(要细分台港,可用 /zh-hant-tw/、/zh-hant-hk/)。每个语言版本有自己独立的URL,互不覆盖。这样做的好处是结构清晰、每个版本都能被独立收录,也方便配hreflang。要避免的反例,是“同一个URL靠cookie或IP自动切换简繁”——这种做法搜索引擎的爬虫看不到不同版本,等于白做了本地化。
结构搭好后,每个页面的 里都要用hreflang把所有语言版本互相声明一遍:简体版要列出自己,也要列出繁体版;繁体版反之。这是hreflang的硬规矩——每个版本都得“自我声明 + 声明所有兄弟版本”,漏了哪个都可能失效。把目录结构和hreflang这两件事配套做好,工具帮你转出来的繁体内容才能真正变成一个被搜索引擎认可、能独立获取流量的版本,而不是一堆躺在某个角落、爬虫都够不着的繁体文字。本地化的价值,最终要靠正确的技术落地来兑现。
## 它和机器翻译、专业本地化方案,分工到底在哪?
最后把它放进整个本地化工具谱系里,给它一个准确的坐标,你就不会高估也不会低估它。这条谱系上有三类东西。
最轻的一端,是这个简繁转换器这类字形/词库转换工具。它处理的是“同一种语言、不同书写系统”之间的转换——简体中文和繁体中文,本质是同一种语言,所以它不需要“翻译”,只需要换字形、换地区词。它的活儿是机械的、确定性的,快,但精度受限于字表和词库的大小。中间一端,是 OpenCC这类生产级的开源转换方案,做的事和它一样,但词条以万计、地区标准更全、消歧更讲究,是同一类工具里的“重装版”,适合对转换质量要求高、又能接受一定工程投入的场景。
最重的一端,是 机器翻译和专业本地化,它们处理的是“不同语言”之间的转换(中文转英文、日文等),或者“带文化适配的深度本地化”,那是另一个维度的问题,需要真正的语义理解。简繁转换和这些不是替代关系,而是流程上的不同环节——简繁转换解决“中文内部的书写系统适配”,翻译解决“跨语言”。
把这个谱系记清楚,你就知道这个工具该用在哪:它是面向繁体中文市场、做中文内容简繁适配的入门级利器,适合出初稿、做快速适配;要追求生产级精度,往OpenCC走;要跨语言,那是翻译的事,跟它无关。各就各位,它就是个好用的轻量工具。
## 最容易转错的一简多繁字,给你一份重点核对清单
既然“一简对多繁”是这个工具最大的出错源,那把那些高频踩雷的字集中列出来,你校对时心里就有了重点,不用每个字都疑神疑鬼。下面这些是简体内容里最常见、又最容易被工具转错的字,记住它们,繁体初稿出来后优先盯这几处。
“发”对应“發”(出发、发展、发财)和“髮”(头发、理发、发型),凡是和毛发有关的都该用“髮”,工具常错转成“發”。“里”对应“裡”(里面、这里、心里)和“里”(公里、邻里),表示内部、方位的多用“裡”。“干”最复杂,对应“乾”(干燥、干净、干杯)、“幹”(干活、干部、能干)和“干”(干涉、干扰、若干),三个义项各不相同。“后”对应“後”(后面、以后、前后)和“后”(皇后、太后),表方位时间的用“後”、表君主配偶的用“后”。
再列几个:“面”对应“麵”(面条、面粉、方便面)和“面”(面部、表面、见面),食物相关用“麵”。“松”对应“鬆”(轻松、松开、蓬松)和“松”(松树、松柏)。“表”对应“錶”(手表、钟表)和“表”(表格、外表、表示)。“系”对应“係”(关系、係数)、“繫”(联系、维系)和“系”(系统、中文系)。“台”对应“臺”(舞台、台湾的正式写法)和“台”(台风、一台机器)。“谷”对应“穀”(谷物、五谷)和“谷”(山谷、峡谷)。“范”对应“範”(范围、模范、规范)和“范”(姓氏)。
这份清单不用背,但要建立一个意识:看到繁体初稿里出现这些字,先停一下,确认工具选的繁体字符合上下文。它们占了一简多繁错误的绝大多数。配合前面说的差异高亮功能,你可以快速跳到这些被改动的字上逐个核对,校对效率会高很多。把这几个高频字盯死,繁体内容的质量就稳住了大半。
## 繁体内容的SEO收录,和简体站有什么不同要注意的?
繁体内容做好了,怎么让它在台港的搜索里被正确收录、获得流量,有几个和简体站不太一样的点要留意。
第一是编码与字符的正确性。繁体页面要确保用UTF-8编码, 的 lang 属性标对(繁体用 zh-Hant 或更细的 zh-Hant-TW),让搜索引擎一眼认出这是繁体内容、推给对的用户。如果编码或语言标记出错,繁体字可能显示成乱码,或被错判成其它语言,收录就受影响。第二是搜索引擎的地区差异。台湾、香港的搜索市场以Google为主,做法和大陆以百度为主的简体SEO有差异——关键词调研要用面向台港的数据,内容偏好、外链生态也不同,不能把简体站那套原封不动搬过去。
第三是避免简繁版本互相打架。一个站如果同时有简体和繁体版本,又没用hreflang正确标注,搜索引擎可能把它们当成重复内容、或者在搜索结果里给用户推错版本(台湾用户搜到了简体版)。前面讲的目录结构加hreflang,正是为了解决这个——让每个版本各自独立收录、各自匹配对的地区用户。把这三点做到位,工具帮你转出、人工帮你打磨的繁体内容,才能真正在台港的搜索结果里站稳,而不是转好了却收录不佳、白费功夫。本地化的最后一公里,是技术收录这一关。
## 三步用它生成一版繁体市场的内容初稿
把它接进出海内容的本地化流程,操作就三步,适合快速产出台湾或香港版的文案初稿。
- 先定目标市场、选对模式。要发台湾,就选“简转繁 + 台湾模式”;要发香港,选“简转繁 + 香港模式”。这一步定的是“往哪个地区的繁体转”,直接决定它套哪套地区词库——选错了,台湾市场会读到香港词,反之亦然。
- 把简体原文贴进去、生成繁体初稿。它支持较大篇幅(上限约50万字符),可以整篇文案、整个产品描述一次性转。它会先按地区词库换词、再逐字转字形,几秒出一版繁体初稿,还会高亮显示哪些字发生了改动,方便你定位。
- 逐项人工校对歧义字和本地词。这步是本地化的命门,不可省。拿到初稿后,重点盯两类地方:一是含“发、里、干、后”这类一简多繁歧义字的词,逐个核对繁体字选对没有;二是那些词库没覆盖、还带着大陆味的用词,按目标市场的地道说法替换。校完,再交给本地母语者终审最稳。
这套流程的定位,是“用工具出初稿、用人工保地道”。它替你把字形转换和最常见的地区词替换这两件体力活包了,让你不用从零开始一个字一个字改;但繁体本地化里真正考验功力的歧义消解和地道用词,仍然得人来把关。把它卡在“初稿”这一步,它高效;指望它一键出能直接上线的繁体内容,它会让你在某个“頭發”上栽跟头。
## 简繁转换和国际SEO,到底有什么真实关联?
把它放回SEO的语境,简繁转换不是个孤立的文字游戏,它牵着国际SEO的好几根线。
第一根线是关键词的简繁差异。简体用户搜“软件”,繁体用户搜“軟體”或“軟件”——这是三个不同的搜索词,搜索量、竞争度都不一样。如果你只把简体站的内容做字形转换、不换地区词,台湾用户搜“軟體”时,你那个写着“軟件”的页面就对不上他的搜索词,白白丢掉匹配。所以面向台港市场做关键词,得用对应地区的真实用词,而这正需要地区词库的支持——这个工具能帮你把方向找对,但用词的精准还得人工补。
第二根线是 hreflang的正确标注。一个站同时有简体和繁体版本,得用hreflang告诉Google它们是同一内容的不同语言版本,否则容易被当成重复内容。Google在本地化页面的官方文档 (https://developers.google.com/search/docs/specialty/international/localized-versions)里讲清了怎么标注本地化版本。
关键在于,中文的核心区别是“文字系统”而非“国家”,所以业界推荐用基于书写系统的语言标签——zh-Hans(简体)和 zh-Hant(繁体),而不是容易把书写系统和地理位置混为一谈的 zh-CN、zh-TW。W3C关于语言标签的官方说明 (https://www.w3.org/International/articles/language-tags/)专门讲了 zh-Hans、zh-Hant 这两个书写系统子标签的由来和用法,是配置hreflang时的权威参考。要做台湾、香港的细分,还能进一步用 zh-Hant-TW、zh-Hant-HK。
第三根线是内容质量与重复。光做字形转换、不做本地化的繁体页面,在母语者眼里是“机翻味”很重的次品,停留、互动都会差,间接拖累SEO表现。这又回到工具的定位上——它给的是初稿,能不能成为一个让繁体用户读着舒服、愿意停留的优质页面,取决于初稿之后的人工打磨。这个工具是国际化的第一块踏板,不是终点。
🔧 动手试试:中文简繁转换器
简繁互转加台湾香港用语本地化。这是保哥自研的免费在线工具,浏览器里打开就能用,不用注册、不用装插件。
→ 打开中文简繁转换器 (https://zhangwenbao.com/tools/chinese-converter.php)
## 常见问题解答
用它转出来的繁体内容,能直接发布到台湾或香港站吗?不建议直接发,必须先人工校对。它对“一简对多繁”的字是写死的一对一映射、不看上下文,“头发”会被转成“頭發”这种错(正确是“頭髮”);它的地区词库也只有几十个词,大量本地词没覆盖。正确做法是把它的输出当初稿,重点核对歧义字和地道用词,最好再由本地母语者终审后再发布。
它说的“智能检测”“智能替换”,是真有AI吗?没有。它的“智能检测”就是统计文本里简体字和繁体字各有多少个、比个大小来判断方向;“智能替换”就是拿地区词库做字符串查找替换。整个过程没有任何自然语言理解或AI成分,是查表加统计。这不影响它好用,但你别因为“智能”两个字就高估了它的精度。
转出来的繁体字,台湾人读着会觉得地道吗?比纯字形转换强,但远谈不上完全地道。选台湾模式时,它会把“软件、网络、博客”这些最显眼的大陆词换成“軟體、網路、部落格”,能挡掉一眼露馅的尴尬。但它的台湾词库只有约52个词,大量日常和专业用词没收,读起来仍会有大陆味。要真正地道,得在它的初稿基础上补本地化人工。
“软件”在台湾和香港转出来的结果一样吗?不一样,这正是地区词库的价值。选台湾模式,“软件”转成“軟體”;选香港模式,“软件”转成“軟件”(香港跟着用“件”而非“體”)。如果你选的是不套词库的标准模式,那“软件”只会按字形转成“軟件”,在香港对、在台湾就不地道。所以面向哪个市场,就要选对应的地区模式。
它能处理中医、法律这类专业内容里的繁体吗?不建议依赖它。专业内容里有大量异体字、罕用字和专业术语,而它的约2700字对照表是常用字子集,异体字、罕用字基本不覆盖;专业术语的地区差异它的小词库更是收不全。这类内容用它转,出错率会明显升高,必须有该领域的专业人员逐字校对。它适合的是通用的营销、产品内容,不是专业领域的精密文本。