.htaccess - 将非 www 重定向到 www 并保留子域不被重定向

Rhy*_*Guy 3 .htaccess redirect subdomain redirection

因此,在我的主域“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>
Run Code Online (Sandbox Code Playgroud)

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

我应该在 .htaccess 文件中添加什么来完成这个?

Tom*_*Tom 5

您可以排除的每个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>
Run Code Online (Sandbox Code Playgroud)

或只是特定的,你只需要重定向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>
Run Code Online (Sandbox Code Playgroud)