永久性地将任何URL(无论是https还是http)重定向到特定的https url,其中ssl证书适用于apache

时间:2012-05-23 07:30:05

标签: apache mod-rewrite

我正在尝试将解析到同一个网络服务器的各个网址重定向到我拥有ssl证书的域。我的apache conf有以下重写规则:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST}   !^(https?://(www\.)?)?my\.domain\.org [NC,OR]
RewriteCond %{HTTPS_HOST}   !^(https?://(www\.)?)?my\.domain\.org [NC]
RewriteRule ^(.*)$ https://my.domain.org$1 [R=301,L]

然后关注虚拟主机

 <VirtualHost *:443>
   ...
 </VirtualHost>

以上规则适用于http://example.orghttps://my.domain.org。它们也适用于http://my.domain.orghttps://my.domain.org。它们不起作用,但不适用于https://example.orghttps://my.domain.org。浏览器为与主机不匹配的证书提供警告页面。有什么想法在我的条件下出了什么问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

可能不是重写规则 - 而是您已设置的(裸或SNI)虚拟主机和证书对。即主机名的值,硬编码到那些vhost的证书中。

可以预期该服务器的证书将发布到* .example.org,并且主题替代名称为example.org。

您可以使用'openssl x509 -text -noout -in cert.pem'进行检查。