当域重定向到www时,如何将www子域重定向到非www

时间:2014-02-24 10:31:46

标签: apache .htaccess redirect subdomain no-www

我的主域名目前已永久重定向到 www.mydomain.com (非www到www重定向),其中.htaccess如下:

RewriteCond %{HTTP_HOST} ^mydomain.com$
RewriteRule ^/?$ "http\:\/\/www\.mydomain\.com\/" [R=301,L]

RewriteCond %{HTTP_REFERER} !^http://mydomain.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://mydomain.com$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mydomain.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.mydomain.com$      [NC]

我想知道我将要创建的所有子域名,例如。 blog.mydomain.com,将被重定向到非www,ex。 blog.mydomain.com www.blog.mydomain.com 。每次我创建子域并输入非www URL到浏览器时,它都会提示重定向循环。

希望你能帮忙!谢谢! :)

2 个答案:

答案 0 :(得分:13)

为所有子域保留此规则:

# rule for forcing www on main domain
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# rule for removing www on sub domains
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.mydomain\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

答案 1 :(得分:2)

这一行在一行中支持http + https

# Redirect www subdomain to non-www 
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.yourdomain\.com)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [R=301,L]