将所有http和https域名stream量重写为基于https的url的问题

我正试图获得所有的变化

http://www.example.com http://example.com https://www.example.com https://example.com www.example.com example.com 

全部redirect到

 https://www.example.com 

我有以下mod_rewrite块:

 RewriteEngine on ReWriteCond %{SERVER_PORT} !^443$ RewriteCond %{HTTP_HOST} ^([az.]+)?example.com$ [NC] RewriteCond %{HTTP_HOST} example.com$ [NC] RewriteRule .? https://www.example.com%{REQUEST_URI} [R=301,L] 

似乎除了一个:

https://example.com不会被redirect到

按预期https://www.example.com

如果我删除了条件:

 ReWriteCond %{SERVER_PORT} !^443$ 

所以它影响http和https,它仍然不像预期的那样。

我哪里错了? 谢谢

您无法使用.httaccess进行SSL到SSL的redirect

您必须为每个域使用单独的VirtualHost条目(前提是您的Web服务器支持SNI ):

 <VirtualHost *:443> ServerName example.com Redirect 301 / https://www.example.com SSLCertificateFile /etc/ssl/example.com.crt SSLCertificateKeyFile /etc/ssl/example.com.key </VirtualHost>