强制所有请求使用https://并添加www

时间:2014-04-24 09:48:20

标签: .htaccess mod-rewrite ssl

我花了无数个小时试图解决这个问题而且它正在努力。我确信它非常简单,但我在stackoverflow.com或其他网站上找到的答案都不适合我。< / p>

我正在使用仅对www.example.com有效的SSL证书,并且出于无数愚蠢的公司原因,我只使用此证书。

我想强制所有请求使用SSL并添加www。到域名。以下所有域都正确重写:

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

未重写的域名是我无法找到答案的一个问题

https://example.com

它只是吐出通常的“证书无效”警告。

我的.htaccess文件中有以下代码:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

RewriteCond %{http_host} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

我真的希望有人为我找到解决方案,因为我无法在任何地方找到答案。

1 个答案:

答案 0 :(得分:0)

这应该有效:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=302]

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=302,L]

它会检查网址中是否有www,如果没有,则会添加它。然后它将检查并查看它是否为https,如果不是,则会添加它。