将HTTP重定向到HTTPS并添加WWW

我正在尝试在Apache上运行的网站上正确设置HTTPS重定向。我具有* .example.com的通配SSL证书。当前,我的RewriteRule将所有HTTP通信重定向到同一HTTPS地址,这对于所有子域都适用。但是,当某人尝试转到http://example.com时,它会将他们重定向到https://example.com,并且他们的浏览器会发出安全警告,因为我的证书不包含该URL。

我想设置服务器,以便具有子域的任何地址都使用HTTPS重定向到该地址,而没有子域的地址将添加到www重定向到该地址:

  1. http://example.com重定向到https://www.example.com
  2. http://foo.example.com重定向到https://foo.example.com
  3. http://bar.example.com重定向到https://bar.example.com

我的服务器运行的是Ubuntu 16.04,MySQL,PPH 7和Apache2。我曾尝试阅读官方文档,但大部分内容都困扰着我。这是我在<VirtualHost *:80>下的/etc/apache2/sites-enabled/000-default.conf中的内容

RewriteEngine on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent,L]
RewriteRule ^http://example.com https://www.example.com [L]

我期望第一个规则(底部)将基本域重定向到带有www的HTTPS。添加了第二条规则,以使用相同的网址将所有其他流量重定向到HTTPS。目前,似乎在所有情况下都适用第二条规则。

ahricher1 回答:将HTTP重定向到HTTPS并添加WWW

经过一番阅读,我发现了:

RewriteEngine On

RewriteRule ^http:\/\/example.com https://www.example.com [L]

RewriteCond %{HTTP_HOST} !^example.com$
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L]
本文链接:https://www.f2er.com/3130674.html

大家都在问