Apache重写HTTPS站点的规则和DNS设置

对于位于以下位置的Web应用程序

https://www.domain.com/ 

凭借发给“www.domain.com”的SSL证书,

什么是适当的重写规则,DNS设置,或两者的组合,使每个下面的url无意中redirect到https://www.domain.com/

  1. http://www.domain.com 2. http://domain.com 3. https://domain.com 

难度真的是#3。 https://domain.com往往会导致浏览器安全信息。 主要的HTTPS网站如何做到这一点? 以Paypal.com为例。

作为项目3的一些更多的帮助,也许还有2,如何使用服务器名称指示在同一主机上使用两个证书。 (即:www.domain.com和domain.com) Apache的Wiki有一些具体信息。

– 克里斯托弗·卡雷尔

跟进詹姆斯的 答案 :

 RewriteCond %{HTTP_HOST} !^www.domain.com$ [OR] RewriteCond %{HTTP_PORT} !^443$ RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] 

这仍然不能解决#3,你需要一个通配符或UCC证书。

我认为最简单的select是在htaccess文件中或者在你的httpd.conf中使用mod_rewrite。 这里是我用来转发你需要的前两个:

 RewriteCond %{SERVER_PORT} 80 ReWriteRule ^(.*)$ https://www.domain.com/$1 [R,L] 

所以,要转发https://domain.com到https://www.domain.com ,你可以这样做:

 RewriteCond %{SERVER_PORT} 443 RewriteCond %{HTTP_HOST} ^domain.com RewriteRule ^(.*)$ http://www.domain.com/$1 [R,L] 

如果你想尝试的话,我确定有一种方法来整合这两个规则集。 暂时不在我的apache服务器上进行testing。