WordPress多语言网站域名和文件夹

时间:2018-06-10 作者:Elex

Answered & edited !

我在上安装了一个Wordpressexample.com.

我使用Polylang插件将多语言系统添加到此网站。我有16种语言,配置为使用example.com/fr 对于法语,example.com/de 对于德语等。。。

我想使用韩语和日本的域名。而不是example.com/jp, 我想上这个网站example.jp.

我在想办法解决这个问题。htaccess,无需移动子域或域上的其他语言。

这是我所拥有的,但如果我example.jp/page/ 我被重定向到example.com/ja/page/, 您知道隐藏此重定向的方法吗?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp$
RewriteRule (.*) http://example.com/ja/$1 [R=302,L]

RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
如果您需要其他信息,该域正在使用CNAME,我正在使用WP引擎托管。关于permalinks,我可以将它们传递到过滤器中,以清除当前子目录链接系统。

谢谢你的时间!

EDIT : 正如回答中所解释的,CNAME和服务器文件系统为我提供了所需的一切。我不需要使用。htaccess以实现我的目标。

1 个回复
最合适的回答,由SO网友:DocRoot 整理而成

如果您已经更新了内部链接example.jp 指向文件系统上与example.com (通过CNAME和相应的服务器配置更改)那么您不必重写example.com, 自从example.jp 访问相同的文件。尝试重写到其他域将隐式触发外部重定向(无论您是否指定R 上的标志RewriteRule 指令)。

所以,要在example.jp 域:

RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp
RewriteRule (.*) /ja/$1 [L]
(为什么使用ja 在替换字符串中-这是打字错误吗?难道不是吗jp 如您之前的问题所述?)

但是,这可能会触发重写循环,具体取决于您是否有其他指令。因此,您可能需要添加一个条件来防止出现这种情况。例如:

RewriteCond %{REQUEST_URI} !^/ja/
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp
RewriteRule (.*) /ja/$1 [L]
额外的RewriteCond 指令确保请求的URL不会(! 前缀)已以开头/ja/.

虽然避免重写会更有效/ja/ 签入的URLRewriteRule 模式。例如:

RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.jp
RewriteRule !^ja/ /ja%{REQUEST_URI} [L]
现在RewriteRule 仅在URL未启动时处理/ja/, 而不是处理每个请求(即。.*).

但是,WordPress可能仍然会尝试规范化主机名?例如,WordPress本身可能会发出一个外部重定向到example.com. 如果是这种情况,那么您需要在WordPress中覆盖此选项,或者使用mod\\u proxy实现一个反向代理,理想情况下,您可以访问服务器配置。

结束