通过 http 和 https 访问网站都可以,但最好将其配置为全部访客仅有的通过 SSL 连接,以便它始终以 http 开头s://万维网.example.com——我错过了什么?
我正在尝试执行以下操作:
访问 http ://example.com 并转到 https ://www.example.com
访问 http ://www.example.com 并转到 https ://www.example.com
访问 https ://example.com 并转到 https ://www.example.com
我在文件夹 /etc/apache2/sites-available 中创建并启用了文件名 examplesite(见下文)
<VirtualHost example.com:80>
ServerName www.example.com
ServerAlias example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
<VirtualHost www.example.com:443>
ServerName www.example.com
DocumentRoot /var/www/example.com/public_html
...
...
</VirtualHost>
答案1
看起来你的第一个虚拟主机不符合虚拟主机的最低要求
Inside each <VirtualHost> block, you will need at minimum a ServerName directive to designate which host is served and a DocumentRoot directive to show where in the filesystem the content for that host lives.
因此,添加一个
DocumentRoot /var/www/example.com/public_html
在第一个虚拟主机上,看看情况如何
来源:Apache 网站
答案2
奇怪,我正在寻找 mod_rewrite 方法,今天发现了这个链接:
https://stackoverflow.com/questions/16200501/http-to-https-apache-redirection
VirtualHost 条目需要 IP 地址,并且不能与 fqdn 一起使用。更改您的
到
...
对于问题的第二部分,将 example.com 重定向到 www.example.com ,您将需要使用重写模块:
RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com [nocase] RewriteRule ^(.*) http://www.example.com/$1 [最后,重定向=301]
这将在所有地址的开头添加 www。