2014-10-02 203 views
0

我有一个域example.com和.htaccess中,我使用下面的代码转发非www到www地址。htaccess与子域重定向

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

现在,我创建了一个子域test.example.com因为上面的规则的,它要http://www.test.example.com,所以我认为写它自己的htaccess文件到www重定向到非www。所以在子域根目录下,我有.htaccess文件,下面的规则。

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^test\.example\.com$ [NC] 
RewriteRule ^(.*)$ http://test.example.com/$1 [R=301,L] 

它不工作,并在重定向循环去,我该如何解决?

回答

0

我发现这个问题很简单的解决方案。

我的主站点文档根目录是/home/example/public_html,子域文件根目录是/home/example/public_html/test

我刚刚将子域的文档根目录更改为/home/example/test,它工作。

0

拿出来!和逃生

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^test.example.com$ 
RewriteRule ^(.*)$ http://test.example.com/$1 [R=301,L] 
+0

没有工作,仍然是同样的问题。我只在子域htaccess文件中做了更改 – Pankaj 2014-10-02 07:15:48

+0

您确定它实际上正在打印该文件吗? Vhost问题可能? – brian 2014-10-02 07:18:22

+0

它的打击,一旦我删除htaccess规则,它开始工作并转发到www.test.example.com – Pankaj 2014-10-02 07:22:47

0

你不需要2条规则。只要保持在主要的.htaccess此规则对于你的主要领域:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L] 

现在RewriteCond %{HTTP_HOST} ^example\.com$情况只会影响到主域离开你的子域不变。

+0

更改DocumentRoot将确保避免影响子域,但您仍然可以保留此规则以防将来创建一些CNAME别名域。 – anubhava 2014-10-03 07:01:56