将所有非www重定向到www,除了一个带有htaccess的子域

Sté*_*let 7 .htaccess redirect

我想重定向所有URL不包含wwwwww

我用过这个:

RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*) http://www.example.com$1 [QSA,L,R=301]
Run Code Online (Sandbox Code Playgroud)

现在我需要一个不像这样重定向的子域,否则我会收到错误.

所以我想,以重定向不与子或开头的URL wwwwww.example.com

我怎样才能做到这一点 ?谢谢

Sco*_*ens 21

你需要一秒钟RewriteCond.你可以随意申请一个RewriteRule.

假设任何不是sub.mydomain.com必须www.mydomain.com,这里是你的代码:

RewriteCond %{HTTP_HOST} !^sub.mydomain.com$
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteRule ^(.*) http://www.mydomain.com/$1 [QSA,L,R=301]
Run Code Online (Sandbox Code Playgroud)

但是你可以使用|Regex中的pipe()字符进一步简化这个:

RewriteCond %{HTTP_HOST} !^(sub|www).mydomain.com$
RewriteRule ^(.*) http://www.mydomain.com/$1 [QSA,L,R=301]
Run Code Online (Sandbox Code Playgroud)

  • 嗨斯科特,很好的答案 - 你需要在$ sign之前使用正斜杠,尽管没有它,它会将sub.example.com/folder重定向到www.example.com文件夹 (2认同)

小智 5

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

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