我安装了通配符SSL证书,可以通过SSL为任何子域提供页面。
例如: https://www.domain.com https://test.domain.com https://demo.domain.com
我需要编写一些执行以下操作的.htaccess规则。
如果单独请求域
,则强制使用WWW和SSL离。将http://domain.com或https://domain.com重定向到https://www.domain.com
对所有没有它的请求强制使用SSL
离。 http://anything.domain.com重定向到https://anything.domain.com
编辑:我了解如果有人请求https://domain.com(没有子域名),则无法阻止证书错误
考虑到这一点,下面的代码是否是处理其他重定向的最佳方式?
# WWW
RewriteCond %{HTTP_HOST} ^mysampledomain\.com$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# SSL
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 0 :(得分:2)
SSL证书不能单独在域上运行,因此如果有人请求
https://mysampledomain.com
,则会在重定向发生之前收到错误。
除了获得涵盖您的基本域的证书之外,您还可以执行 nothing 。
当我的浏览器请求https://mysampledomain.com
时,它要做的第一件事就是处理与服务器的连接加密。但由于您的服务器无法为主机名提供有效的SSL证书,我的浏览器会说,“谢谢,但不,谢谢 - 我不相信你,因此我不会跟你说话更多“。
你甚至不会 到服务器可以将我的浏览器重定向到其他地方的位置 - 加密发生在HTTP之上的层上,并且因为我们无法就加密达成一致,所以你的服务器确实如此甚至没有与我的浏览器“交谈HTTP”(这是必要的,这样你就可以发出 HTTP 重定向)。