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

Posted

技术标签:

【中文标题】域重定向到www时如何将www子域重定向到非www【英文标题】:how to redirect www subdomain to non-www when domain is redirected to www 【发布时间】:2014-03-25 23:03:32 【问题描述】:

我的主域目前永久重定向到 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,例如。 blog.mydomain.com不是 www.blog.mydomain.com。每次我创建子域并在浏览器中输入非www URL时,它都会提示重定向循环。

希望您能提供帮助!谢谢! :)

【问题讨论】:

htaccess add www if not subdomain, if subdomain remove www的可能重复 【参考方案1】:

为所有子域保留这一规则:

# 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]

【讨论】:

我们能否让 http 部分动态化,以便如果网站更改为 https 则它应该是自动的? 如果有人在www.sub.domain.com 之前添加https://,这将不起作用 绝对是工作规则,与https无关 假设我有我的子域 xyz.abc.com 现在如果有人浏览到 www.xyz.abc.com 那么它完美地重定向到 xyz.abc.com 但如果有人添加 https:// infront的 www.xyz.abc.com 然后它无法重定向到没有 www @MrinmoyMk:你能为此发布一个新问题吗?我会在那里发布答案。【参考方案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]

【讨论】:

以上是关于域重定向到www时如何将www子域重定向到非www的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess:将主域重定向到https:// www,子域重定向到https://(不带www)

如何在Heroku上使用Zerigo DNS将根级域重定向到www子域? [关闭]

htaccess 强制 https 并将 www 重定向到非 www,但没有其他子域

301从主域(www和非www)重定向到子域

将根域重定向到子域的影响

如何使用 Cloudfront 将裸域重定向到 www?