我将首先描述我想要实现的目标。
首先我有一个主域名xxx.pl,一个域名有 4 个子域名000.xxx.pl,111.xxx.pl,222.xxx.pl,333.xxx.pl。我还有另一个域名yyy.pl拥有自己的子域名(大部分相同)。当然会有更多的域名,但这不是重点。
现在我需要的是任何没有为 http 设置虚拟主机的域,都将指向/var/www/pl.xxx与 https 相同。(因此它是默认站点),现在我已将其设置为(与 https 类似):
站点已启用/999-默认
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/vhosts/pl.xxx
<Directory /var/www/vhosts/pl.xxx>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
所以据我所知,这个文件将被最后加载,所以如果没有更精确的答案,apache 将转到那里。
然后有主域的文件(HTTP 和 HTTPS 除了密钥等之外是相同的),它将在默认站点配置之前加载。
站点已启用/998-pl.xxx
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName xxx.pl
ServerAlias *.xxx.pl
DocumentRoot /var/www/vhosts/pl.xxx
<Directory /var/www/vhosts/pl.xxx>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
现在我需要指定 2 个域(仅在 https 上),在 http 上它们应该使用站点已启用/998-pl.xxx配置。
站点已启用/997-pl.xxx.000
服务器管理员[电子邮件保护]
ServerName 000.xxx.pl
ServerAlias 000.xxx.pl
DocumentRoot /var/www/vhosts/pl.xxx.000
<Directory /var/www/vhosts/pl.xxx.000>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
除了其他域名之外,其他一切都很好yyy.pl在 https 上使用与000.xxx.pl地址。我需要它只限制000.xxx.pl使用此地址。并非所有其他未分配的域。
所以https://yyy.pl|https://000.yyy.pl等应该使用默认 SSL设置而不是000.xxx.pl设置。
请帮助我了解发生了什么。也许我误解了 apache 配置用法。
编辑:
通常,问题得到部分解决,因为它有效。但是关于子域配置的依赖关系 /etc/hosts 条目有一个有趣的事情。
答案1
站点已启用/999-默认
[...]
所以据我所知,这个文件将被最后加载,所以如果没有更精确的答案,apache 将转到那里。
反过来也一样。因此,显示为默认的网站应该是第一的Apache 必须解析。我会将其命名为 000-default 或任何其他名称,这样前其他。