.htaccess https://www 单域证书上的重定向

.htaccess https://www 单域证书上的重定向,.htaccess,ssl,ssl-certificate,.htaccess,Ssl,Ssl Certificate,如果我有一个SSL证书 https://www.example.com 但不是为了 https://example.com 我发现我应该使用 #First rewrite any request to the wrong domain to use the correct one (here www.) RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,

如果我有一个SSL证书

https://www.example.com 
但不是为了

https://example.com
我发现我应该使用

#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
用于正确重定向。这似乎有效,但有一种情况除外:

如果我输入
https://example.com
则不会将其重定向到
https://www.example.com
。相反,我得到的是:


无需为
https://example.com

要了解您需要哪些证书,您需要了解浏览器何时检查这些证书,以及服务器何时有机会发出重定向

HTTPS本质上是将HTTP会话“包装”到TLS会话中,因此请求和响应大致如下所示:

  • 浏览器:我可以进行TLS会话吗
  • 服务器:当然,让我们开始做加密的事情吧
  • 浏览器:您使用的是什么X509证书?如果有区别,我将在“example.com”上请求一个资源
  • 服务器:这里有一个“example.com”的证书,以及一些中间证书,以便您可以跟踪到您信任的颁发者
  • 浏览器:好的,这符合我的要求。让我们谈谈HTTP
  • 浏览器:我想在host example.com上获取资源/信息
  • 服务器:请将您的用户重定向到此新URL:
如您所见,当服务器有机会重定向时,浏览器已经需要建立TLS连接并确定它信任该连接,因此将永远不允许无效证书对重定向进行签名


这实际上是一件非常好的事情:否则,有人劫持一个网站,可能只是将其所有流量重定向到他们拥有证书的地方,而不会为被劫持的域生成可信证书。

您好,请尝试在每篇文章中坚持一个问题;如果两个部分的答案不同,处理投票、复制等问题会变得很尴尬。@IMSoP好的,我会这么做!