仅在子域名上提供 SSL

仅在子域名上提供 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]

这两个 [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 作为根。

相关内容