这应该是一个非常简单的设置!
我尝试仅在一个子域上启用 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]
这两个 [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 服务器上。
答案1
您只在端口 443 上定义了一个 VirtualHost,因此对端口 443 的任何访问都必须使用该配置,无论他们使用什么域名。如果这不是您想要的,请为其他域设置 VirtualHost 配置并将它们指向其他位置。
您的问题也一样http://sub2.domain.com——您没有为该域名定义 VirtualHost,因此它使用您的默认 VirtualHost(即第一个),因此它使用 /var/www 作为根。