.htaccess - 将非 www 重定向到 www 并保留子域名以防止重定向

.htaccess - 将非 www 重定向到 www 并保留子域名以防止重定向

因此,我在主域名“domain.com”上从 cPanel 创建了几个子域名,如“sub1.domain.com”和“sub2.domain.com”。它们在服务器上的实际位置是“domain.com/sub1”和“domain.com/sub2”。

现在,我想使用 .htaccess 将非 www 重定向到 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>

这有效。当有人输入 domain.com 时,它将被重定向到 www.domain.com。但是当有人输入 sub1.domain.com 时,他将被重定向到 www.domain.com/sub1 - 我不想要这样,它需要在 sub1.domain.com 中。

我应该在 .htaccess 文件中添加什么来实现这一点?

答案1

您可以像这样单独排除每一个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>

或者只是具体说明你只想重定向domain.comwww.domain.comRewriteCond

<IfModule mod_rewrite.c>
RewriteEngine On

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

答案2

RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

相关内容