WPML可处理来自不同域或子域的不同语言。 为了使之工作,需要在您的Web服务器上进行一些设置。 我们将首先谈论其工作原理,让您了解如何在自己的服务器上进行设置。

处理来自不同域的请求的步骤

当收到请求时,会发生以下情况:

  1. DNS将网站的托管位置告诉浏览器。
  2. Web服务器获取请求,并决定让哪个虚拟主机应答。
  3. 虚拟主机运行WordPress和WPML。WPML告诉WordPress为每种语言返回哪个页面。

要使位于不同域的语言起作用,所有语言都需要指向安装的同一个WordPress。 您需要设置DNS和Apache配置以做到这一点。

如果您发现自己正在编辑.htaccess,试图将来自某个域的请求重定向到其他域,那么您做错了。 因为只安装了一个WordPress,所以没有什么内容需要重定向。

1) 设置DNS

您需要为不同的语言注册所有域或子域。 您如何执行此操作在很大程度上取决于您的主机托管控制面板,但最终的结果总是相同的。 所有域必须转到同一个Web服务器。

如果您运行的是一个本地站点(localhost)并想测试此配置,您就需要修改“hosts”文件,并为不同的域添加条目。

通常情况下,本地服务器的地址是127.0.0.1,因此如果您想测试诸如es.localde.local这样的域,请将以下内容添加到已有的hosts文件:

127.0.0.1  es.local
127.0.0.1  de.local

在Linux PC上,hosts文件位于 /etc/hosts。在Windows中,通常位于C:WINDOWSsystem32driversetchosts

2) 设置Web服务器

在我们的示例中,我们将使用Apache,并解释配置文件看起来是怎样的。 您的服务器可能有一个基于Apache的控制面板,它为Apache的配置文件增加了漂亮的图形控制。 如果您无法确定如何使用控制面板实施以下操作,您可以从这里复制示例并询问您的托管服务提供商。

最简单的方法是对所有域使用单一的VirtualHost条目,使用ServerAlias指令让Apache以同一虚拟主机应答不同的域。

例如:

<VirtualHost *>
  DocumentRoot /your_wp_install_directory/wordpress
  ServerName www.english-domain.com
  ServerAlias www.french-domain.fr

  ... your other stuff here ...
</VirtualHost>

这告诉Apache,安装了一个WordPress应答来自www.english-domain.comwww.french-domain.fr的请求。那些完全不同的域或子域没关系。

如果您不知道如何在虚拟主机文件中设置ServerAlias(也许是因为您无法直接访问它),你可以设置两个 VirtualHost 部分,这两个部分都指向完全相同的DocumentRoot(WordPress的安装路径),但带有不同的ServerName值。

您甚至可以不用WPML进行此设置(推荐)。 转到这两个域,确定您可以看到您的WordPress网站。

注:许多共享的主机托管服务提供商不会让您直接编辑Apache的配置文件。 在此情况下,您可以尝试创建指向同一物理WordPress安装的cPanel附加域。

3) 告诉WPML您在域中使用不同的语言

一旦此设置起作用,您可以告诉WPML用它来确定语言。

转到WPML->语言。在那里,为语言选择“各语言使用不同的域”。WPML将向您询问每个语言的域。请输入、验证并保存。

WPML中每个域的不同语言.

WPML在语言字段中设置的默认值为带有区域名称的子域。您可以用您的实际域名覆盖它。


多网站支持

本FAQ描述了单个网站WordPress安装在不同域中设置语言所需的步骤。

完成额外配置后,您可以在多网站模式中在不同的域中使用不同语言。为此,请遵循在多网站模式中设置不同域中的语言的指南