htaccess重定向与子域

时间:2014-10-02 07:03:16

标签: apache .htaccess mod-rewrite redirect

我有一个域example.com,在.htaccess中,我使用下面的代码将非www转发到www地址。

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]

它无法正常工作并进入重定向循环,我该如何解决?

3 个答案:

答案 0 :(得分:0)

取出!和逃脱

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

答案 1 :(得分: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$条件只会影响主域名,而不会影响子域名。

答案 2 :(得分:0)

我找到了解决这个问题的简单方法。

我的主网站文档根目录为/home/example/public_html,子域文档根目录为/home/example/public_html/test

我刚刚将子域的文档根目录更改为/home/example/test并且它有效。