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.comredirect到http://domain.com

这是我的VirtualHosts。

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 ://domain.com服务于错误的VirtualHost,因为没有*:443 VirtualHost和domain.comServerName

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

domain.com

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

我觉得这应该工作。 (它应该将https请求redirect到http ,从而提供正确的文档根目录。)

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

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

提前感谢您的任何指导。

这是行不通的。 这不是SSL的工作原理。 为了启用SSL,您必须具有SSLEngine On和服务器证书和密钥的指令。

只是通过听443不会帮助。

如果您不打算在您的domain.com上运行SSL,那么理想情况下您不应该试图通过HTTPS访问它。 有没有一个有效的用例,为什么你的用户将尝试通过https访问domain.com?