用mod_rewrite强制SSL

我有下面的声明,它完美的工作redirect所有请求“WWW”:80强制浏览器到相同的位置:443

RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^/(.*)$ https://www.mydomain.com/$1 [R=301,L] 

但是,我想要做的是,无论https://和.mydomain.com之间的什么 – 在这种情况下,www,但它可以是任何东西,如“www2”或“dev”等 – 我想URL简单地转换为它的SSL等效。

我是新来的mod_rewrite,所以我正在寻找甚至可能的假设子域可以是任何可变长度的字符?

在此先感谢您的帮助。

尝试:

 RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^/*(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

通过使用Apache mod_rewrite提供的环境variables:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

有关更多信息,请参阅http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

你可以在你的replacestring中使用HTTP_HOSTvariables:

 RewriteEngine on RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} mydomain\.com$ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

打开geocar的build议的日志logging,并做了一些研究,我发现这个问题是在/etc/apache2/ports.conf中的一个缺失的声明,导致重叠:443。 我解决了,问题没有了。 感谢大家的见解和帮助。