.htaccess 在 WordPress 中从子域重定向到主域
.htaccess redirect from subdomain to main in WordPress
我正在尝试向我的 wordpress 网站添加语言。为此,我在 "per domain" 模式下使用 "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/ [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
但是,不幸的是,它仅适用于主页(即 http://en.domain.com). When I type http://en.domain.com/category/article 我看到 404 Not Found 页面。
感谢您的帮助!
您需要执行 URL 重写,而不是您使用 R=301
指定的重定向,以生成状态代码为 301
.
的 HTTP 重定向
可能您有一个通配符 DNS 条目,这样 *.domain.com
会转到您的 Web 服务器,并且 WordPress 安装在 domain.com
。以下代码应重写您的 URL 以访问正确的页面和语言。请注意,RewriteCond
已修改为使用 (en|es|fr)
指定多种语言,而 RewriteRule
仅指定 L
选项,表明它是 L待处理的最新规则。
RewriteBase /
RewriteCond %{HTTP_HOST} ^(en|es|fr)\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/ [L]
我花了很多时间在谷歌上搜索,终于找到了答案。我想提醒一下,我的问题是调整 "qTranslate X" 插件来服务我的多语言网站。所以这就是我为实现这一目标所做的工作。
在设置 -> 永久链接中我已经 "custom structure" 检查了,
http://domain.com/%category%/%postname%
在qTranslate -> "Advanced Settings" -> 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
唯一需要做的就是确保将对子域的请求作为对主域的请求进行处理。 IE。您的子域文件夹必须指向安装 WordPress 的文件夹。在不同的主机上,它可以通过不同的方式实现。至于我,在域设置中我找到了一个选项 "process all requests from subdomains, that don't exist"。所以我什至不需要创建任何子域!只是一个复选框。如果您不确定如何操作,请联系您的托管支持服务并请他们提供帮助。
我正在尝试向我的 wordpress 网站添加语言。为此,我在 "per domain" 模式下使用 "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/ [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
但是,不幸的是,它仅适用于主页(即 http://en.domain.com). When I type http://en.domain.com/category/article 我看到 404 Not Found 页面。
感谢您的帮助!
您需要执行 URL 重写,而不是您使用 R=301
指定的重定向,以生成状态代码为 301
.
可能您有一个通配符 DNS 条目,这样 *.domain.com
会转到您的 Web 服务器,并且 WordPress 安装在 domain.com
。以下代码应重写您的 URL 以访问正确的页面和语言。请注意,RewriteCond
已修改为使用 (en|es|fr)
指定多种语言,而 RewriteRule
仅指定 L
选项,表明它是 L待处理的最新规则。
RewriteBase /
RewriteCond %{HTTP_HOST} ^(en|es|fr)\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/ [L]
我花了很多时间在谷歌上搜索,终于找到了答案。我想提醒一下,我的问题是调整 "qTranslate X" 插件来服务我的多语言网站。所以这就是我为实现这一目标所做的工作。
在设置 -> 永久链接中我已经 "custom structure" 检查了, http://domain.com/%category%/%postname%
在qTranslate -> "Advanced Settings" -> 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
唯一需要做的就是确保将对子域的请求作为对主域的请求进行处理。 IE。您的子域文件夹必须指向安装 WordPress 的文件夹。在不同的主机上,它可以通过不同的方式实现。至于我,在域设置中我找到了一个选项 "process all requests from subdomains, that don't exist"。所以我什至不需要创建任何子域!只是一个复选框。如果您不确定如何操作,请联系您的托管支持服务并请他们提供帮助。