我在 Debian 8 上安装了 Apache 2.4,并且有几个仅基于 HTTP 名称的虚拟主机,并且(目前)只有 1 个由 Let's Encrypt 证书签名的 HTTPS 虚拟主机。目前,安全虚拟主机运行良好,但如果我访问其他非安全虚拟主机,https://
我会获得安全虚拟主机的内容。有没有办法(在这种情况下)重定向到 HTTP 或避免加载安全虚拟主机站点的内容?
答案1
当然,可以通过以下方式从 https 重定向到 http:
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com
SSLEngine on
# All other SSL settings, just like in your working TLS VirtualHost.
Redirect / http://www.example.com/
</VirtualHost>
你只需要明白:
- 这将首先给出警告“您的连接不是私密的”,因为 HTTP
Host:
标头中的主机名与您的证书不匹配,即NET::ERR_CERT_COMMON_NAME_INVALID
。当然这是您已经得到的。 - 普通用户不会在地址栏中写
http://
或,只会写,默认情况下会用 完成。(实际上,有些用户甚至不知道地址栏,而是使用 Google 搜索,然后选择第一个结果。)https://
www.example.com
http://
我宁愿创建一个包含所有信息的虚拟主机,并添加一些默认页面来解释此域未配置任何站点。通过使用在 上最先出现的文件名,例如并使用,TLS
确保此页面位于工作虚拟主机之前。apache2/sites-enabled
001-tls
<VirtualHost _default_:443>
答案2
您自相矛盾了。您无法使用“https”访问非安全虚拟主机,默认情况下 https 表示端口 443,即 SSL 虚拟主机,但在极少数情况下,您将始终进入 SSL 虚拟主机。