.htaccess – redirect非www到www和保留子域从redirect

所以,在我的主域“domain.com”上,我创build了几个来自cPanel的子域名,比如“sub1.domain.com”和“sub2.domain.com”。 他们在服务器上的真实位置是在“domain.com/sub1”和“domain.com/sub2”中。

现在,我想redirect非WWW与.htaccess www,这是目前我所拥有的:

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301] </IfModule> 

这工作。 当有人inputdomain.com时,它将被redirect到www.domain.com。 然而,当有人进入sub1.domain.com,他将被redirect到www.domain.com/sub1 – 我不想,它需要在sub1.domain.com。

我应该在.htaccess文件中添加什么来实现这个目标?

您可以像这样单独排除每个sub1sub2 ;

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^sub1\.domain\.com [NC] RewriteRule ^(.*) - [L] RewriteCond %{HTTP_HOST} ^sub2\.domain\.com [NC] RewriteRule ^(.*) - [L] RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301] </IfModule> 

或者只是具体说明,您只想使用RewriteConddomain.comredirect到www.domain.com

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^domain\.com [NC] RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301] </IfModule> 
 RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC] RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

这适用于所有域,不包括任何子域。 玩的开心。