URL 路径翻译与多语言 SEO

作者:

在

译文页面能不能被搜索引擎正确收录,取决于地址结构和几个头部标记。这篇把插件在这一侧做的事说清楚。

语言目录:译文页的地址长什么样

每种目标语言对应一个 URL 前缀,译文页挂在这个目录下,例如 /ja/about/。页面里的站内链接会自动挂到同一个目录下——这一步和「翻译 URL 路径」开关无关,哪怕路径保持原样,链接也会带上语言前缀,否则访客一点链接就跳回原文站点了。

图片、脚本、样式表这些资源地址不动,改了只会 404。只有导航类地址会处理:<a href>、canonical/shortlink、<form action>、og:url,以及结构化数据里的 itemprop="url" 和 sameAs。

翻译 URL 路径开关

打开后,路径本身也会译过去:/ja/关于我们/ 变成 /ja/about-us/ 那种效果。访客打开译文地址时,插件会先把路径换回原文路径,WordPress 才找得到对应的文章,所以译过的地址照常可访问。

路径的翻译要求和正文完全不同:要保住斜杠层级、不能有空格、扩展名和查询串得原样留着。所以插件为它准备了一条独立的 URL 路径翻译指令,开关打开时才在设置页显示,正文指令不必再写 URL 相关的要求。译文回来后还会再兜一道:剥掉域名、空格换成连字符、合并多余斜杠、查询串与锚点按原文还原、结尾斜杠跟随原文——这些地址要写进 href,错一个字符就是 404。

路径作为独立数据入库(类型标记为 uri),在「译文数据」里可以按类型筛选、单独修改。开关是后开的话,需要重新翻一遍页面才会产生路径译文,已有的文本译文不受影响。

hreflang

插件会在译文页和原文页的 <head> 里输出各语言版本的对应关系,含 x-default,语言管理里配了地区变体的会按 语言-地区 的形式输出。这是搜索引擎判断「这几个地址是同一篇内容的不同语言版本」的依据,不输出的话多语言页面容易被判定成重复内容。

sitemap 与 robots

  • sitemap:访问语言目录下的 sitemap 时,里面的地址会本地化成该语言的地址。
  • robots.txt:按语言把已有的 Sitemap: 行复制一份补上。这里没有写死地址,而是把站点已有的行按语言复制——所以无论 sitemap 是 WordPress 内置生成的,还是 Yoast、Google XML Sitemaps 之类插件生成的,都能自动跟上。

语言切换菜单

默认是浮动可拖动的,位置记在访客浏览器本地。想让它跟着主题版式走,就在设置里填主题某个元素的 id,菜单会挂进那个元素;找不到该 id 时自动回退成浮动显示,不会因为主题改版就没了入口。可选显示旗帜小图标,图标以 data URI 内嵌,不额外发请求。

菜单里显示哪些语言,受语言管理里「展示对象」控制:所有访客、仅搜索引擎、仅普通用户。