Apache 提供错误的文档根目录

Apache 提供错误的文档根目录

我已经在网站的子域上安装了 SSL。除了这个奇怪的行为外,一切都运行正常。

如果我将浏览器指向以下位置,则会提供这些文档根目录:

http://domain.com       -> /var/www     [GOOD]
https://sub.domain.com  -> /media/sub   [GOOD]
https://domain.com      -> /media/sub   [BAD]

该列表中的最后一个 URL 应服务于/var/www,而不是/media/sub。换句话说,我想安全地将用户从 重定向https://domain.comhttp://domain.com

这是我的虚拟主机。

domain.com

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www
</VirtualHost>

sub.domain.com

<VirtualHost *:443>
    ServerName sub.domain.com:443
    DocumentRoot /media/sub
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

我尝试过的方法

有人向我建议https://domain.com提供错误的 VirtualHost,因为没有带有 的*:443VirtualHost 。ServerNamedomain.com

为了解决这个问题,我尝试这样做:

domain.com

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:443>
    ServerName domain.com
    Redirect / http://domain.com/
</VirtualHost>

我感觉像这样应该工作。(它应该将https请求重定向到http,从而提供正确的文档根目录。)

但是,当我这样做时,Apache2 甚至不会启动。它给出了以下错误:

[error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)

在此先非常感谢您的指导。

答案1

这行不通。这不是 SSL 的工作方式。要启用 SSL,您必须拥有 SSLEngine On 以及服务器证书和密钥的指令。

仅仅监听 443 是没有帮助的。

如果您不打算在 domain.com 上运行 SSL,那么理想情况下您不应尝试通过 HTTPS 访问它。您的用户尝试通过 https 访问 domain.com 是否有有效的用例?

相关内容