将子域重定向到主域

时间:2012-07-24 03:48:32

标签: apache mod-rewrite redirect subdomain

我正在处理一个支持英语和西班牙语的网站,我想知道如何将所有请求重定向到特定语言的子域到主域(en.mysite.com和es.mysite) .com到mysite.com)。

整个网站都是用PHP编写的,它有一个主脚本index.php,用于处理languagesection GET参数并相应地显示内容。

现在,我尝试在mysite.com根目录下的.htaccess文件中执行以下操作。我认为它澄清了我想要做的事情:

RewriteEngine On

# English redirects

RewriteRule ^en.mysite.com$ index.php?language=English&section=Main
RewriteRule ^en.mysite.com/store$ index.php?language=English&section=Store
RewriteRule ^en.mysite.com/create_account$ index.php?language=English&section=CreateAcc

# Spanish redirects

RewriteRule ^es.mysite.com$ index.php?language=Spanish&section=Feed
RewriteRule ^es.mysite.com/comprar$ index.php?language=Spanish&section=Store
RewriteRule ^es.mysite.com/crear_cuenta$ index.php?language=Spanish&section=CreateAcc

但这不起作用。谁能告诉我这里我做错了什么?

1 个答案:

答案 0 :(得分:0)

您不能在RewriteRule中将主机名包含在匹配项中,因为它只与URI匹配。您需要为每个规则使用与主机名匹配的单独RewriteCond

RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^$ /index.php?language=English&section=Main

RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^store$ /index.php?language=English&section=Store

RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^create_account$ /index.php?language=English&section=CreateAcc

然后西班牙语重写:

RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^$ /index.php?language=English&section=Feed

RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^comprar$ /index.php?language=English&section=Store

RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^crear_cuenta$ /index.php?language=English&section=CreateAcc