我想将http://domain.com
重定向到https://www.domain.com
。我成功地将http
重定向到https
,就像这样(在default-ssl.conf
文件中):
<VirtualHost domain.com:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost _default_:443>
RewriteEngine on
ServerAdmin webmaster@localhost
ServerName domain.com:443
ServerAlias www.domain.com
DocumentRoot /var/www/html
</VirtualHost>
但是当我在没有www
的情况下输入我的域名时,收到错误消息This site is untrusted, the certificate is only valid to <www.domain.com>
我在网上尝试了很多提议的解决方案,但它没有用。 我的环境:
答案 0 :(得分:1)
更改http
(彩池80)配置:
<VirtualHost domain.com:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
这将对https
和www
进行综合检查:
<VirtualHost domain.com:80>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]
</VirtualHost>
也就是说,您仍然可以获得This site is untrusted, the certificate is only valid to <www.domain.com>
,因为初始连接将是不正确的证书主机名。因此,使用这两个配置(http
和https
执行此操作可能会更好 - 调整如下:
<VirtualHost domain.com:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName domain.com:443
ServerAlias www.domain.com
DocumentRoot /var/www/html
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www\.)?(.+)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]
</VirtualHost>
我们的想法是,在http
连接上,您只需重定向到https
。然后在https
连接上,检查是否设置了www
&amp;相应调整。