这应该是一个超级简单的设置!
我正在尝试仅在一个子域上启用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作为根。