德国站流量混进美国筛选,先别怀疑 Search Console

德国站的流量出现在「美国」筛选里,通常不是 Search Console 出问题,而是 Countries 这个维度被当成成绩单用了——它记录的是搜索用户当时所在的位置,不是你的站点瞄准哪个市场。要判断市场切分有没有生效,得把 Countries 和 Page 一起筛,看落到德语目录上的 query 是不是德语、落到英语目录上的 query 是不是英语。对不上的时候,原因多半在架构:canonical 没有自引用、hreflang 回链不成对、x-default 指错了版本,或者服务器跳转让 Google 从来只抓得到一版。这些都在站点里,不在账号设置里,改账号没用。

我盯这份报表盯到过凌晨两点。台灯只开了一半,茶已经凉了,屏幕上左边是 Performance 报告,右边是那个 /de/ 页面的源码。鼠标停在 Countries 那一行,我先点的德国,列表里一串德语 query,看着挺舒服;手一滑又点了一下美国,还是德语。那一刻我脑子里冒出来的第一个念头是:GSC 的数据乱了。

我读错的不是数据,是这个维度的定义

后来我把自己按住,回去把 Countries 的定义又读了一遍。它说的是搜索用户所在的位置。一个在美国的德语使用者,搜德语词,Google 给他德语页面——这不是故障,这是它该干的活。人在哪儿,和他愿意读什么语言,本来就是两件事。把它们混成一件,是我自己先混的。

真正有信息量的从来不是「美国筛选里有德语」,而是反过来:把筛选切到德国,query 列表里是不是德语。如果德国筛选里排在前面的是一堆英语词、落地页是 /en/ 目录,那说明信号没立住。不是 Google 不肯给德国用户德语版,是它不认为你有德语版,或者不确定该给哪一版。

国家读数得配上 query 的语言才有意义

Search Console 的 Performance 报告里没有语言这一栏。国家有,设备有,查询有,语言没有。很多人第一次找不着北就卡在这儿。所以判断多语言切分有没有生效,只能靠 query 本身的词:冠词、介词、变音符号、看起来长得离谱的复合名词。这些比任何国家读数都直接。

我现在的读法固定成两步。先把 Countries 定在一个国家,再加一个 Page 筛选,用目录前缀或者正则把 /de/ 圈出来,然后往下翻 query 列表。看到某一行可疑,点开它的 Pages 标签,看它到底落在了哪个目录。四个国家各来一遍,两组读数的差异就摆出来了。要是四个国家筛出来的 query 语言都差不多,那基本可以确定语言切分没起作用,Google 大概已经把几版当成同一页的不同副本。

把几版当成副本,最典型的触发器是 canonical。每个语言版本必须自引用,/de/ 的 canonical 指 /de/,/en/ 的指 /en/。这话听着像废话,但模板一改就翻车:母版是从英语站复制过来的,canonical 那一行忘了换。于是 /de/ 页面每时每刻都在告诉 Google「我其实是 /en/ 的副本」,德语版就从候选池里退出去了。

第二个是 hreflang 的回链。hreflang 是一组互指的声明,不是单向通知。/de/ 里写了 /en/,/en/ 里也得写 /de/,两边在同一个 cluster 里。少任何一条边,Google 只读到半句话,剩下交给它自己判断,它一般挑权重最高的那版——通常就是英语。x-default 是另一个常被忽略的落点,它该指向语言选择页或者你最想兜底的那一版,不是随手挑一个。

第三个看起来跟报表不搭,但最能解释「美国筛选里为什么有德语」:服务器按 IP 或者 JS 自动跳转。访客来自美国,302 到 /en/。真实用户的体验确实变好了,但 Googlebot 的出口 IP 大多也在美国,它拿到的是同一个跳转。结果就是它从来没真正渲染过 /de/。我在浏览器里手输网址能看到德语页面,就以为一切正常,可抓取端看到的是完全另一套。

子目录和 ccTLD,同一个读数不是同一件事

这里还有一个「看情况」,取决于你用的是哪种结构。ccTLD 是硬地理信号,example.de 本身就在告诉 Google 你针对德国。这种站点在美国筛选里出现德语 query,多半真的是美国那边的德语使用者在读,属于正常样本,不用管。子目录不一样,/de/ 的地理信号是靠 hreflang、页面语言、内部链接、服务器位置一点点撑起来的,本身就软。同样一行读数,放在子目录上更可能意味着信号没立住。所以别把两种结构的国家筛选放在一起比。

顺带拆一个常见的误解:hreflang 不是墙。它不阻止任何地区的用户进 /en/,也不阻止美国用户去买德国站的东西。它只做一件事——告诉 Google 在什么情况下优先展示哪一版。所以在美国筛选里看到德语 query 命中德语页,那不是泄露,那是它在工作。

这也是为什么我后来不再用 Countries 那一栏来排市场优先级。它记录的是用户位置,不是需求。拿它说「德国占我们四成」和拿它说「该给德国加预算」,是两件事。它在诊断上很有用,在打分上几乎没用。

别为每个子目录单独建一份 property

结构上还有个选择:不需要为每个子目录单独建一份资源。一个网域资源(domain property)下面,用 Page 筛选按目录前缀分开看就够。多建几份的代价是你得同时维护几套验证、几套数据口径,而问题出在架构上,报表怎么切都切不出来。

改完别急着看数字

最后是耐心。canonical 和 hreflang 改完之后,不会立刻反映到国家筛选上。Google 要重新抓取、重新处理 cluster,报表本身也有处理延迟和抽样,低量的 query 会被省略。一两天读数没动不代表没生效。我现在是修完先记下日期和当时的筛选条件,隔几周再回来对同一组数据。不然很容易在没变化的那几天里反复改,把本来是对的配置越改越乱。

所以每次看到国家筛选里的错位,我做的第一件事是关掉 Performance,打开那个页面的源码,看 link rel="alternate" 那几行,再看 canonical。报表是诊断工具,不是成绩单,账号里没有什么东西需要动。

本文仅为教育性信息,不构成专业意见;在依据文中内容采取任何行动前,请先咨询相关领域的专业人士。