hreflang标错与“只收录一版”之间的因果链条
多语种官网在Google里只出现一个语言版本,问题往往不在内容翻译质量,而在Google不确定这些不同语言的页面到底是什么关系。Google的网页抓取和索引系统并不天然“看得懂”你的德语版和英语版是同一产品的两种语言呈现,它需要明确的信号来建立版本之间的对应关系,hreflang就是承担这个职责的核心信号。
Google处理多语言版本时hreflang的作用位置
Google的爬虫抓取页面后,会先解析HTML头部的hreflang声明,把当前页面的URL与它声明的所有替代语言版本URL放入同一组“语言集群”中。这个集群建立起来之后,Google才会根据用户搜索时使用的语言和地域参数,从集群里挑一个最合适的版本展示。hreflang不是排名因素,也不直接提高权重,它的作用是帮助Google正确归并页面关系,防止把不同语言的相同内容当成重复页面。
从“标错”到“只收录一版”的触发过程
当hreflang标错时,Google会尝试按你的声明去验证版本关系,但发现闭环断裂或格式错误,它就无法确认两个URL是同一内容的语言变体。这时候Google会退回到内容相似度判断——发现多个页面内容高度相似(翻译后的页面当然相似),就按重复内容处理,只保留它认为最可能是目标用户需要的那一版,其余版本从索引中剔除。这就是多语种站只收录单语言版本的大致触发路径:hreflang失效,信号缺失,Google自己做归并,结果产生了误删。
这份hreflang错误清单,直接决定你的站会不会被误删
下面四种错误覆盖了大多数外贸站hreflang的典型问题。你可以拿自己网站的代码逐项对照。
未双向闭环互指:只标主版本、不反向标注
hreflang的规则是所有参与互指的语言页面必须双向闭环。也就是说,英文版页面声明了德文版存在,德文版页面就必须同样声明英文版存在。如果你只在英语版首页加了德语版本的hreflang链接,德语版自己却没有反向声明英语版,这个对应关系就不成立。Google的判定逻辑是:只声明却不被对方回指,说明两个页面之间可能不是严谨的语言版本关系,无法确认德语版是否有独立的收录价值。多数只收录主语言的案例,root cause就是这里,不是英文版权重多高,而是其他语言版本没有被完整声明。
代码格式错误:zh_CN与zh-CN不能混用
hreflang的语言地域代码必须遵循ISO标准格式:语言代码使用ISO 639-1,地域代码使用ISO 3166-1 Alpha 2,中间用短横线连接。正确写法是zh-CN、en-US、de-DE。不少建站系统或手工维护的头部代码里会出现zh_CN、en_US这类下划线写法,或者干脆写成zh-cn(地域代码大小写不一致)。Google对这类格式错误的容忍度很低,格式不合规的hreflang会被直接忽略,等同不存在。还有一种情况是把语言码写成三位字母(如chi而不是zh),同样失效。
对应关系错配导致语言/地域指向混乱
hreflang支持语言加地域的定向写法,比如en-us定位美国英文用户,en-gb定位英国英文用户。这里最常见的错配是把语言版本和地域版本混在一起指向同一个URL:比如英文版页面同时被en和en-us两个代码指向,而站里实际上只存在一个通用英文版。对Google来说,这相当于一个页面同时声称自己是全球英文版和美国本地化英文版,语义冲突。更严格的做法是:站内如果只有一个英文版,统一用en声明即可,不要混入en-us、en-gb;只有你确实为美国用户单独做了内容版本,才有必要使用en-us。
漏配内页hreflang:只标首页不标详情页
外贸站的产品详情页、技术参数页、案例页是多语种收录的大头,也是hreflang漏配的重灾区。常见情况是建站时只给首页做了多语言互指,站内产品详情页只做了URL对应的语言切换链接,没写hreflang。结果就是首页在Google里正常显示多语言版本,进入内页后只剩默认语言被收录。Google判断内页收录时,没有hreflang信号,对于内容相近的产品描述(尤其机器翻译版本),难以确认是否重复,自然会优先保留权重最高的默认语言版本。
多语种官网仅收录一版:从现象到根因的排查步骤
排查时要按下面顺序逐步执行,每一步都有明确的确认目标,不要上来就改代码。
第一步:在Google Search Console确认实际收录的语言版本
打开Google Search Console的“网页索引编制”报告,筛选具体语言路径下的URL,看每个语言版本的索引状态。比如你的德语版路径是/de/,就在报告里筛选包含/de/的URL,逐一确认状态是“已编制索引”还是“已抓取但未编制索引/未编制索引:重复”。这一步能确定哪些语言版本确实被剔除了,以及Google标记的原因。如果Google明确标记为“重复内容”,那基本可以锁定hreflang或canonical层面出问题。
第二步:用网址检查工具查看已渲染页面实际输出的hreflang
在Search Console的网址检查工具中输入一个未被收录的语言版本URL,点击“测试实时网址”,再查看“已呈现的HTML”或“网页抓取”结果。重点检查两个地方:第一,这个页面HTML头部是否真的输出了link rel="alternate"的hreflang标签;第二,输出的URL是否带有正确语言代码,是否完整声明了所有其他语言版本。很多外贸站实际输出的代码和网站后台配置的不一样,原因是主题模板硬编码、缓存插件干扰、CDN返回了旧版本页面。这里看到的是Google实际抓取到的内容,不是你以为配置的内容。
第三步:核对XML Sitemap中的hreflang注释是否完整
如果页面HTML里的hreflang没问题,接下来检查XML Sitemap。Google支持在Sitemap里用xhtml:link声明多语言版本关系。打开你的Sitemap文件,找到其中一个语言版本的URL条目,对照检查它是否列出了全部其他语言版本的alternate链接。注意:同一组语言版本,在HTML头部和Sitemap中的声明必须保持一致,不能HTML里声明了三个语言版本,Sitemap里只写了一个。如果Sitemap不完整,Google也可能会漏掉非默认语言版本。
第四步:定位根因后修改并提交索引
完成前三步后,你会知道问题出在哪个层面:是HTML头部完全没有hreflang,还是格式错误、互指缺失、还是Sitemap声明不全。定位到具体URL的根因后修改代码,修改完成用网址检查工具验证Google渲染到的内容已更新,然后点击“请求编制索引”。如果是大量URL批量修改,提交一份更新后的Sitemap并在Search Console里手动请求重新处理即可。这类排查如果自身团队缺乏经验,也可以委托给外贸SEO服务做一次完整的多语种收录审计,避免多次提交仍无法解决。
hreflang双向闭环互指的标注模板(可直接套用)
下面提供三种标准写法的模板,注意你可以选择其中一种方式声明,若同时使用需保证HTML头部和Sitemap中的语言版本对应关系完全一致,避免出现信息冲突(如果你的服务器已经通过HTTP Header方式声明,更不需要重复在HTML里加)。
HTML头部标注格式与多版本互指示例
假设你有三个语言版本:中文(/zh/)、英文(/en/)、阿拉伯语(/ar/)。三个页面的HTML头部都应该包含完整的互指示例,每个页面分别输出同样的三行代码,只是当前URL换成本页。以英文版为例:
<link rel="alternate" hreflang="zh-CN" href="https://www.yourdomain.com/zh/" />
<link rel="alternate" hreflang="en" href="https://www.yourdomain.com/en/" />
<link rel="alternate" hreflang="ar" href="https://www.yourdomain.com/ar/" />
<link rel="alternate" hreflang="x-default" href="https://www.yourdomain.com/en/" />
x-default表示当Google无法匹配用户语言时展示的默认版本。填写hreflang声明时注意代码风格统一:如果使用语言码不带地域(en),所有版本统一不带地域;如果带地域(en-US),所有版本统一带地域,别混用。
HTTP Header标注的适用场景与格式
适用于非HTML文件,比如PDF产品样本、技术手册。当Google抓取PDF文件时,无法从HTML头部读取hreflang,只能通过HTTP响应头获取。服务端配置格式:
Link: <https://www.yourdomain.com/zh/product-sample.pdf>; rel="alternate"; hreflang="zh-CN",
<https://www.yourdomain.com/en/product-sample.pdf>; rel="alternate"; hreflang="en",
<https://www.yourdomain.com/ar/product-sample.pdf>; rel="alternate"; hreflang="ar"
XML Sitemap中hreflang与alternate的书写规范
Sitemap中的写法需要声明XHTML命名空间,格式如下:
<url>
<loc>https://www.yourdomain.com/en/</loc>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://www.yourdomain.com/zh/" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.yourdomain.com/en/" />
<xhtml:link rel="alternate" hreflang="ar" href="https://www.yourdomain.com/ar/" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.yourdomain.com/en/" />
</url>
注意Sitemap文件根节点<urlset>中必须声明xmlns:xhtml="http://www.w3.org/1999/xhtml"前缀,才能识别这个标记。Sitemap中每个语言版本URL都要分别列出对应条目,不能只写英文版这一条,中文版URL没有对应的Sitemap条目的话,Google无法确认这个地址存在。
hreflang与canonical同时存在时,必须遵守的搭配规则
hreflang负责声明多语言版本关系,canonical负责声明同一URL的优选版本,两者职责不同但经常出现在同一页面。Google的规范是:如果你的页面同时使用了hreflang和canonical,canonical必须指向当前页面自身的URL,不能指向其他语言版本。
同一URL上hreflang与canonical的正确指向关系
以中文版页面为例,canonical必须写成:
<link rel="canonical" href="https://www.yourdomain.com/zh/" />
<link rel="alternate" hreflang="en" href="https://www.yourdomain.com/en/" />
<link rel="alternate" hreflang="ar" href="https://www.yourdomain.com/ar/" />
每个语言页面的canonical指向自身,这个群里没有任何一个页面被指定为“绝对主版本”。hreflang会告诉Google这些页面是对等关系,canonical只负责自身去重,两个信号不冲突。
常见错误搭配示例与正确改法
错误搭配:所有语言页面的canonical都指向英语版主页。这样做的意图可能是想让英文版获得全部权重,但后果是Google在索引时把所有语言版本都理解为english版的重复页,非英文版本就会全被剔除,这种情况和hreflang标错叠加时,问题会急剧加重。正确改法是每个语言版本的canonical均指向自身。如果确实想让某种语言对当前用户优先级更高,应该用hreflang的地域参数来引导,而不是靠canonical强制聚合。关于canonical与搜索意图的更深层匹配,可以参考同一产品多页面的canonical分配逻辑,这里不再展开。
修复hreflang后,如何让Google重新收录被剔除的语言版本
修改完hreflang和canonical之后,代码正确并不等于Google会立刻重新处理这些URL。你需要主动推动重新抓取。
第一步:不要批量提交所有被剔除的URL。先挑一个代表页面(比如德语版首页),用网址检查工具重新抓取,确认Google渲染到的页面已经包含正确的hreflang和canonical。确认无误后再提交索引。第二步:批量处理时,更新XML Sitemap并重新提交,同时注意Sitemap中应该只包含可索引的URL,那些没有实际内容的语言版本(比如机器翻译但内容错乱的页面)不要放在Sitemap里。第三步:对于被标记为“重复”的URL,在Search Console的“页面编制”报告里找到“验证修复”入口,但建议等Google自然重新抓取几天后再点击验证,频繁提交反而可能被系统视为异常。第四步:等待周期通常一到四周。Google重新抓取的频率取决于你网站的抓取配额和更新频率,新站可能等待更久。GEO优化也建议在基础收录修复稳定后再启动,收录异常时做任何品牌曝光优化都会事倍功半。
别再把hreflang当可选优化项:轻错和重错的界定
过去不少人认为hreflang只是锦上添花的优化项,标错了最多是搜索结果地域不精准。这个认知在当前的Google索引逻辑下不成立了。Google面对内容高度相似的多语言页面时,hreflang是判断“独立版本”还是“重复内容”的核心依据,标错导致的后果从“地域展示不准”升级为“索引剔除”。
但也不要说所有hreflang错误都会导致不收录,这里有必要区分轻错和重错。轻错包括:某个页面漏了x-default声明、部分页面声明顺序混乱但内容齐全、语言码正确但地域码精度不够。这类错误通常会造成搜索结果地域匹配不理想,比如德国用户看到了英文版,但不会直接剔除索引。重错包括:hreflang完全没有双向互指、语言代码格式错误、所有语言版本canonical指向同一URL、语言代码指向了不存在的页面URL(404或跳转)。这类错误会直接导致Google无法建立版本对应关系,大概率触发重复内容误判而剔除非默认语言版本。但行业内对轻错和重错的边界仍有分歧,对Google来说判定逻辑并非完全黑盒,部分轻微闭环缺失也有触发不收录的案例报告,所以稳妥策略是把所有hreflang错误都当重点问题修复,不值得冒风险。
另一个过时认知是“只标注主语言版本即可”。这个做法的前提是Google可以智能推断其他语言版本存在,但实际爬虫不会主动猜测你的/de/页面是对应英文版/en/的语言版本——它只能靠你声明的hreflang和站内链接去确认。想覆盖更多目标区域客户,就要确保每个语言版本都完成闭环声明,并且排查要形成周期性检查项,特别是改版、迁移、新增语言版本后都要重新检查一遍。外贸站如果计划做多区域、多语言的矩阵布局,也需要在前期就保证各站可以独立收录后再考虑矩阵策略,相关思路可以参考多站矩阵的成立条件与隐性成本。
多语种收录问题排查清楚之后,还要把目光放远一点:hreflang只是确保Google“看见”你的所有语言版本,页面能否为询盘转化服务,取决于内容质量和匹配度。同一产品在德语区客户和美国客户面前,虽然技术参数相同,但采购关注点、决策路径和搜索行为往往差异明显。如果你的多语言页面只是机器翻译的同质内容,即使所有版本都被收录,转化效果也不会理想。这一点建议结合外贸SEO服务的完整诊断从整体流量和询盘转化层面去做持续优化。