将 https 重定向到非 www 和 http 到 www

Posted

技术标签:

【中文标题】将 https 重定向到非 www 和 http 到 www【英文标题】:Redirect https to non-www and http to www 【发布时间】:2012-05-30 07:42:09 【问题描述】:

我需要重定向组合来实现以下目标:

http://example.com 重定向到http://www.example.com,同时将https://www.example.com 重定向到https://example.com

当通过http访问网站时,我想强制www前缀做域名。

但是 SSL 证书只能在没有 www 的情况下工作。

当通过https 访问时,我不希望域名具有www 前缀。

【问题讨论】:

你到底为什么想要那个? 因为 ssl 证书是为“mysite.com”设置的 那么,为什么不将http流量也重定向到none-www版本呢? 【参考方案1】:

将其放入 非 HTTPS 文档根目录中的 .htaccess 文件中:

RewriteCond %HTTP_HOST ^mysite.com$
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R]

这在您的 HTTPS 文档根目录中:

RewriteCond %HTTPS =on
RewriteCond %HTTP_HOST ^www.mysite.com$
RewriteRule ^(.*)$ https://mysite.com/$1 [R]

【讨论】:

都不工作?您确定正在读取您的 .htaccess 文件吗? 经过进一步测试,是的,第一个工作正常。 http://mysite.com 被重定向到 http://www.mysite.comhttps://www.mysite.com 没有被重定向到 https://mysite.com 进一步测试......我添加了这两个,刚刚意识到https正在重定向到http。【参考方案2】:

https://www.mysite.comhttps://mysite.com 的重定向只能在客户端向https://www.mysite.com 发出初始请求后发生。

要使此初始连接正常工作,https://www.mysite.com 的服务器必须具有对 www.mysite.com 有效的证书,否则,此连接甚至不会发生(并且服务器不会发送重定向响应)。

如果您仍需要重定向,在同一台服务器上,您的服务器必须提供对您要服务的主机名有效的证书。您应该获得包含两个主题备用名称 DNS 条目的证书:mysite.comwww.mysite.com;这将允许您使用相同的证书为两个主机提供服务(然后在需要时使用重写规则)。

(如果您希望客户端支持它,您也可以将服务器名称指示与两个不同的证书一起使用,但这通常用于完全不同的主机名。)

当您申请其中一个时,CA 颁发对mysite.comwww.mysite.com 都有效的证书是很常见的,有时无需额外费用。

【讨论】:

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

apache将http重定向到https,将www重定向到非www

在维护协议 HTTP 或 HTTPS 的同时将 www 重定向到非 www

如何通过 web.config 将 http 重定向到 https 并将 www 重定向到非 www?

iis url 将 http 重定向到非 www https

.htaccess 使用 SSL/HTTPS 将 www 重定向到非 www

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