我需要重定向组合来实现以下目标:
重定向http://example.com
到http://www.example.com
,同时重定向https://www.example.com
到https://example.com
。
我想在www
访问站点时强制前缀做域名http
。
但是 SSL 证书仅在没有www
.
访问时https
,我不希望域名有www
前缀。
https://www.mysite.com
从to的重定向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文档根目录中的 .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]