我想将所有不包含的 URL 重定向www
到www
我用这个:
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^(.*) http://www.example.com$1 [QSA,L,R=301]
现在我需要一个子域不要像这样重定向,否则会出错。
所以我想重定向任何不以 sub 或www
to开头的 URLwww.example.com
我怎样才能做到这一点 ?谢谢
你需要一秒钟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]
|
但是您可以使用正则表达式中的竖线 ( ) 字符进一步简化此过程:
RewriteCond %{HTTP_HOST} !^(sub|www).mydomain.com$
RewriteRule ^(.*) http://www.mydomain.com/$1 [QSA,L,R=301]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这适用于所有域,不包括任何子域。玩得开心。
我尝试了 Scott S 的答案,但没有奏效,所以我修改为使用我用于一般 301 的答案:
RewriteCond %{HTTP_HOST} ^domain.com
RewriteCond %{HTTP_HOST} !^subdomain.domain.com
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
它就像一个魅力