仅在子域上使用SSL

这应该是一个超级简单的设置!

我正在尝试仅在一个子域上启用SSL。 但是,当我这样做时,我的所有子域和我的主域名最终都指向该子域的文档根目录。

要清楚,当我指向我的浏览器时,我得到了以下文档根目录:

http://domain.com -> /var/www [GOOD] http://sub1.domain.com -> /media/large/sub1 [GOOD] http://sub2.domain.com -> /var/www [Strange, but doesn't bother me. And error message would be better if possible, or a redirect to https.] https://domain.com -> /media/large/sub2 [BAD] https://sub1.domain.com -> /media/large/sub2 [BAD] https://sub2.domain.com -> /media/large/sub2 [GOOD] 

那2个[BAD]行业是真正困扰我的。 我不希望导航到这些URL的人访问sub2文档根目录。

这是我的ports.conf

 NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> NameVirtualHost *:443 Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule> 

这里是我的所有/ etc / apache2 / sites-enabled

domain.com

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

sub1.domain.com

 <VirtualHost *:80> ServerName sub1.domain.com DocumentRoot /media/large/sub1 </VirtualHost> 

sub2.domain.com

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

如果重要的话,这是一个完全默认的Ubuntu服务器。

你只有一个在端口443上定义的虚拟主机,所以任何对端口443的访问都必须使用这个configuration,不pipe他们使用什么域名。 如果这不是你想要的,为其他域设置VirtualHostconfiguration,并将它们指向不同的地方。

对于与http://sub2.domain.com的问题相反,您还没有为该域名定义VirtualHost,所以它使用默认的VirtualHost,这是第一个,所以它使用/ var / www作为根。