hreflang、语言切换器、正文里的跨语言链接,是三件必须分开处理的事,顺序也应该是这个顺序:hreflang 只声明哪些 URL 互为语言版本,它不携带链接信号,替代不了内链;语言切换器属于站点模板层的导航;正文里的跨语言链接是单篇文章的编辑判断。把三者捏成“多语言互链”这一个习惯,最常见的后果是新建的语言目录把内链权重一路漏回英文首页,而真正想换语言阅读的那部分读者,还是找不到该去的页面。
我第一次把这三件事拆开,是在 Search Console 的链接报告里。切到日本目录,展开“内部链接”,排在最上面的一串来源全是英文首页和英文分类页,还有几十条来自英文文章结尾那句“这条内容也有英文版”。当时我盯着屏幕想了几分钟,第一反应是“结构搭得不错”,过一会儿才反应过来不对劲:日语目录刚上线,自己内部还没长出几条链,外面进来的权重倒是被一句句客套话送回原点了。
那天下午我干了件很笨但很有用的事:打开页面源码,只找切换器。
页脚那行小国旗,在源码里是一个 button,点开才展开一个 JS 下拉,真正的带 href 的 a 标签藏在展开后的列表里。我给它的判断是“不能用”——不是因为它丑,是因为我没法确定爬虫会不会去点那个按钮。后来我把它改成一排服务端渲染的纯链接,直接输出到当前页对应的目标语言 URL,不做下拉、不做 hover、不靠 JS 注入。改完过了一阵子,德语的落地页开始出现在搜索结果里。这不能证明就是切换器的功劳,但至少我不再需要猜。
顺便说一句我对 hreflang 的定位:它是声明,不是扶持。它只回答“这几个页面是同一篇内容的不同语言版本”,仅此而已。指望它把新语言版本“带上来”,是把两件事混成了一件。
一条跨语言链接,该放还是不该放
这才是真正要解决的问题。我现在的做法是,每写一条跨语言链接前问三个问题,三个里有一个答不上来,这条链接就不放。
第一,这个读者此刻会不会真的想读另一个语言的版本。技术规格、产品参数、品牌来历这类内容,语言隔阂小,放跨语言链接是服务读者。但一个讲本地下沉市场法规更新、讲本地物流时效的页面,给另一个语言的读者一个“去别的语言看看”,那不是推荐,那是敷衍。编辑价值来自“读者确实需要”,不来自“我们有这个语言版本”。
第二,这条链接的方向是从新目录往外流,还是从老目录往里流。这是我踩过最狠的坑。英文站文章里链到日语版的对应文章,是导入,可以做,但要克制、要具体,一次只给一条。反过来,日语文章里链回英文首页,是导出,新目录刚上线的那几个月,这种导出越少越好。我后来把模板里所有“返回英文版”的位置都改掉了,只在语言切换器里保留一次。
第三,把这条链接删掉,读者会不会卡住。会卡住,说明它是编辑判断的产物,该留;不会卡住,说明它只是我们写顺手了的习惯。这条我用来清理历史内容,比任何工具报告都直接。
子目录和 ccTLD,是两套规则
这两种结构的差别,直接决定跨语言链接的性质。
子目录结构下,/en/、/de/、/jp/ 都在同一个域名里,跨目录链接在爬虫和权重计算上仍然算内链。所以规则要严:绝大多数内链留在自己目录里,跨语言链接只在上面三个问题都过关时才放。目录边界模糊一点,新目录的权重就被稀释一点。
ccTLD 就不一样了。example.de 和 example.jp 各自是一个独立站点,指向对方的链接在信号上更接近外链,不受同一套内链体系约束,也不会把 A 站的权重按内链的方式搬给 B 站。所以 ccTLD 的运营思路更接近“分别经营几个站”,跨站互链要按外链的标准去衡量:这个位置值不值得我给出一次点击。
我不认为哪种结构绝对更好,这取决于团队规模、预算,以及你愿不愿意把每个语言当成独立项目来养。但选定一种之后,跨语言链接的判断标准要跟着变,别把子目录的谨慎套到 ccTLD 上,也别拿 ccTLD 的松散去管子目录。
新语言目录上线,内链从哪一层长起来
最常见的错误做法,是把新目录里的每一个页面都指回英文首页,理由是“给新页面一点权重”。反过来才对:新目录的内链要先从它自己的层级里长出来。
我上线一个语言目录时的顺序大致是:先把该语言自己的 hub 页之间的互链搭好,再由 hub 页往下链到分类页,分类页往下链到文章。文章之间的横向互链,优先连同一语言里的相关文章。英文站到新语言的链接,只放在英文站真正相关的那几篇里,而不是站级模板里。这样做的好处是,新目录内部先形成一个闭环,外部给的权重才有地方可去。
这里有个我个人常用的检查方式,不需要什么高级工具:爬一遍全站,把每个语言目录的入链来源拉出来,按来源目录分一下。如果一个语言目录的入链几乎全部来自英文首页,基本可以判定是模板层出了问题,不是内容写得不好。
切换器是模板问题,别混进编辑判断
切换器属于全站导航,它的正确写法只有一种大方向:服务端输出的、可抓取的纯 HTML 链接,指向当前页面的目标语言对应版本。
几个具体的坑。切换器里所有链接都指向各语言首页,而不是当前页的对应版本——读者点了日语版,掉进日语首页,然后自己重新找一遍,这个点击的价值几乎为零。目标语言版本还不存在时,别硬塞一个指向英文页的链接,要么不显示这一项,要么就明确指向该语言目录的入口页。至于 x-default,它通常指向选择语言的入口页或默认语言版本,这部分和切换器是两件事,不必绑在一起。
hreflang 和切换器的关系只有一层:两者指向的应该是同一批 URL。切换器里有的语言,hreflang 里也该有;不一致的时候,去查模板,而不是去改 hreflang。这是我目前整套做法里唯一一条当成硬规则来执行的东西。