所以,在我的主域“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文件中添加什么来实现这个目标?
您可以像这样单独排除每个sub1 , sub2 ;
<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>
或者只是具体说明,您只想使用RewriteCond将domain.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]
这适用于所有域,不包括任何子域。 玩的开心。