0

我正在尝试将语言添加到我的 wordpress 网站。为此,我在“每个域”模式下使用“qTranslate X”插件。

它应该按如下方式工作:

http://domain.com - main language
http://en.domain.com - english
etc...

我需要的是将所有请求从子域重定向到主域。其余的将由插件完成。

Example:
http://en.domain.com/category/article
should be redirected to
http://domain.com/category/article

我修改了主 .htaccess WP 文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^en\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

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

但是,不幸的是,它只适用于主页(即http://en.domain.com)。当我输入http://en.domain.com/category/article时,我看到 404 Not Found 页面。

谢谢你的帮助!

4

2 回答 2

1

您需要执行 URL 重写,而不是您指定R=301用来生成带有状态代码的 HTTP 重定向的重定向301

大概您有一个通配符 DNS 条目,这样*.domain.com就可以访问您的 Web 服务器,并且 WordPress 安装在domain.com. 以下代码应重写您的 URL 以访问正确的页面和语言。请注意,RewriteCond已修改 以指定多种语言,(en|es|fr)并且RewriteRule唯一指定的L选项表明它是要处理的最后一条规则

RewriteBase /
RewriteCond %{HTTP_HOST} ^(en|es|fr)\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L]
于 2015-07-26T00:50:29.813 回答
0

我花了很多时间在谷歌上搜索,终于找到了答案。我想提醒一下,我的问题是调整“qTranslate X”插件以服务于我的多语言网站。所以这就是我为实现这一目标所做的。

在 Settings -> Permalinks 我检查了“自定义结构”, http://domain.com/%category%/%postname%

在 qTranslate -> “高级设置” -> URL 修改模式中:使用 Per-Domain 模式。我将“domain.com”设置为主要语言,“en.domain.com” - 英语等。

您不必为永久链接自定义结构更改默认的 WordPress .htaccess 代码,它与“qTranslate X”插件完美配合。因此,请确保您的 .htaccess 文件看起来像这样。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

唯一需要做的是确保对子域的请求作为对主域的请求进行处理。即您的子域文件夹必须指向安装 WordPress 的文件夹。在不同的主机上,它可以通过不同的方式实现。至于我,在域设置中,我找到了一个选项“处理来自不存在的子域的所有请求”。所以我什至根本不需要创建任何子域!只是一个复选框。如果您不确定如何执行此操作,请联系您的托管支持服务并请求他们提供帮助。

于 2015-07-26T14:43:49.597 回答