Apache SSL新的域redirect

我们只是将域名从www.olddomain.com切换到www.newdomain.com。 我们在https://wwww.example.com上有多个桌面快捷方式。

我已经设置了重写规则在这两个虚拟主机和SSL虚拟主机,如果域不是www.newdomain.comredirect到www.newdomain.com。

VirtualHost重写可以完美地处理非SSL请求。 但是,在SSL页面上,用户会被授予无效的安全证书exception。 重写规则在这之前似乎没有影响。 但是,如果他们添加一个例外,重写规则马上踢,并把他们带到www.newdomain.com。

看起来证书exception是在redirect之前发生的,这是有道理的。 这里是SSL虚拟主机redirect。 非SSL的几乎是一样的。

<VirtualHost _default_:443> RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.newdomain\.com$ [NC] RewriteRule ^ https://www.newdomain.com%{REQUEST_URI} [R=301,L] .... <VirtualHost> 

我读过HTTP_HOST不是SSL中的有效variables,但即使删除该条件并将所有请求redirect仍会产生exception。

在显示浏览器证书exception之前,有什么办法可以使用有效的SSL证书和子域/域组合来redirect到新的域?

由于直到用户发出请求之前,重写/redirect才会发生,因此HTTPS请求到具有错误SSL证书的站点引发浏览器警告是非常合理的。

处理这个问题的正确方法是在两个单独的IP上分别使用两个单独的SSL虚拟主机,每个都使用自己的SSL证书进行configuration。 然后,在olddomain虚拟主机中,根据需要设置redirect。

由于HTTPS在主机:标头之前协商安全性,因此您必须获得既有旧站点又有新站点的证书,或者需要将旧站点redirect器放在其自己的IP地址上。 你可以用端口玩游戏,但可能会混淆你的用户。

而不是有2个独立的IP和2个单独的证书,另一种select是使用UC证书将两个名称包含在一个证书中。 然后你可以redirect而不会收到任何错误。