将 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.com
但 https://www.mysite.com
没有被重定向到 https://mysite.com
进一步测试......我添加了这两个,刚刚意识到https正在重定向到http。【参考方案2】:
从https://www.mysite.com
到https://mysite.com
的重定向只能在客户端向https://www.mysite.com
发出初始请求后发生。
要使此初始连接正常工作,https://www.mysite.com
的服务器必须具有对 www.mysite.com
有效的证书,否则,此连接甚至不会发生(并且服务器不会发送重定向响应)。
如果您仍需要重定向,在同一台服务器上,您的服务器必须提供对您要服务的主机名有效的证书。您应该获得包含两个主题备用名称 DNS 条目的证书:mysite.com
和 www.mysite.com
;这将允许您使用相同的证书为两个主机提供服务(然后在需要时使用重写规则)。
(如果您希望客户端支持它,您也可以将服务器名称指示与两个不同的证书一起使用,但这通常用于完全不同的主机名。)
当您申请其中一个时,CA 颁发对mysite.com
和www.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