我有一个虚拟主机,它通过 SSL 将非 www 重定向到 www:
<VirtualHost *:443>
ServerName example.com
Redirect / https://www.example.com/
# Do I need to include SSL configuration here?
</VirtualHost >
# Main Site
<VirtualHost *:443>
ServerName www.example.com
Redirect / https://www.example.com/
# Rest of the configurations including SSL
</VirtualHost >
我是否需要在第一个仅执行重定向的 vhost 块中包含 SSL 配置和证书?如果我省略第一个 vhost 块中的 SSL 配置,重定向和站点仍能正常工作,那么为什么我需要将 SSL 证书放在第一个 vhost 块中?
如果它通过 SSL 执行任何操作,则需要 SSL 配置。
重定向和其他 HTTP 响应一样。它们不会得到特殊处理 - 当然浏览器并不知道它即将收到重定向,因此它所做的第一件事就是开始协商 SSL,只有成功协商后它才会对一个域上的一个 URL 发出 HTTP 请求并重定向到另一个域。
我怀疑您的第一个 vhost “工作”是因为您没有使用它而是
http://example.com
在端口:80 上发出非 HTTPS 请求,但也可能是它从其他地方继承了配置(例如服务器级别)。