启用 Apache Virtualhost 站点仅通过 SSL 查看

启用 Apache Virtualhost 站点仅通过 SSL 查看

通过 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。

相关内容