如何配置qTranslate X插件实现站点对应语言版本的跳转?
解决qTranslate X双域名多语言站点无法互相跳转的问题
我之前也碰到过qTranslate X在双域名模式下的跳转问题,刚好可以给你梳理下解决方案:
首先得明确:前缀模式(/en/、/ru/)能正常跳转,是因为所有语言路径都在同一个域名下,插件的路由规则可以直接识别语言参数,生成的切换链接都是站内路径,逻辑自然通顺。但双域名模式属于跨域名跳转,插件需要额外配置才能准确识别每个语言对应的目标域名,不然默认会沿用当前域名生成链接,导致跳转失效。
下面是具体的修复步骤:
确认双域名的基础配置正确性
先检查qTranslate X设置里的「语言域名」配置,确保每个语言都绑定了正确的纯域名(不要加http://或https://前缀):- 英文:填写你的英文站点域名(比如
example.com) - 俄文:填写你的俄文站点域名(比如
example.ru)
同时要保证两个域名指向的是同一个WordPress安装目录,共享同一套数据库,不然插件没法同步语言切换逻辑。
- 英文:填写你的英文站点域名(比如
添加自定义代码修复跨域名跳转链接
qTranslate X默认生成的语言切换链接在双域名模式下可能不会自动替换域名,我们可以通过钩子函数强制插件根据配置的域名生成正确的跨域链接。
打开你当前主题的functions.php文件,添加以下代码:function qtx_fix_cross_domain_switch($url, $lang) { // 获取插件配置的语言对应域名 $language_domains = qtrans_getLanguageDomains(); if (isset($language_domains[$lang])) { // 解析当前URL的路径和参数 $parsed_current_url = parse_url($url); // 拼接目标域名+路径+参数 $target_url = 'https://' . $language_domains[$lang] . $parsed_current_url['path']; if (!empty($parsed_current_url['query'])) { $target_url .= '?' . $parsed_current_url['query']; } return $target_url; } return $url; } // 挂钩到插件的语言URL生成函数 add_filter('qtrans_generateLanguageUrl', 'qtx_fix_cross_domain_switch', 10, 2);这段代码会在插件生成语言切换链接时,自动替换成你配置的对应语言域名,确保跨域名跳转正常。
浏览器语言自动跳转的补充设置
关于浏览器语言无法自动跳转的问题,你需要在qTranslate X的「语言切换」设置里:- 勾选「根据浏览器语言自动重定向」选项
- 为每个语言配置正确的浏览器语言代码(比如英文填
en,en-US,俄文填ru,ru-RU)
另外要注意,服务器缓存或者页面缓存插件可能会干扰自动跳转逻辑,建议先临时关闭缓存插件测试,确认功能正常后再配置缓存规则(排除语言跳转相关的Cookie或URL参数)。
按上面的步骤操作后,双域名模式下的语言互相跳转和浏览器自动跳转应该就能正常工作了。
内容的提问来源于stack exchange,提问作者Stax
相关产品推荐
相关产品推荐

