[英]Redirect https to non-www and http to www
我需要重定向的组合来实现以下目标:
要将http://example.com
重定向到http://www.example.com
,同时将https://www.example.com
重定向到https://example.com
。
我想在通过http
访问网站时强制使用www
前缀做域名。
但是SSL证书只能在没有www
。
通过https
访问时,我不希望域名具有www
前缀。
从https://www.mysite.com
到https://mysite.com
的重定向只能在客户端向https://www.mysite.com
发出初始请求后才会发生。
要使此初始连接正常工作, https://www.mysite.com
www.mysite.com
的服务器必须具有对www.mysite.com
有效的证书,否则,此连接甚至不会发生(并且服务器不会发送重定向响应)。
如果您仍需要重定向,则在同一服务器上,您的服务器必须提供对您要提供的主机名有效的证书。 您应该获得一个包含两个主题备用名称DNS条目的证书: mysite.com
和www.mysite.com
; 这将允许您使用相同的证书为两个主机提供服务(如果需要,然后使用重写规则)。
(如果您希望客户端支持它,您也可以使用具有两个不同证书的服务器名称指示,但这通常用于完全不同的主机名。)
当您申请其中一个证书时,CA发行对mysite.com
和www.mysite.com
都有效的证书是很常见的,有时候不需要额外费用。
将它放在非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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.