具有通配符/非通配符子域混合的Apache配置

具有通配符/非通配符子域混合的Apache配置,apache,wildcard,Apache,Wildcard,我拥有该域,我们将其称为“mydomain.com”,我希望以下虚拟主机设置为按以下方式解析: mydomain.com/www.mydomain.com指向/var/www/ dev.mydomain.com指向/var/www/dev/ *.mydomain.com(所有其他子域)指向/var/www/old 我的apache配置当前设置为: NameVirtualHost 1.2.3.4:80 <VirtualHost 1.2.3.4:80> ServerAlias *

我拥有该域,我们将其称为“mydomain.com”,我希望以下虚拟主机设置为按以下方式解析:

  • mydomain.com/www.mydomain.com指向/var/www/
  • dev.mydomain.com指向/var/www/dev/
  • *.mydomain.com(所有其他子域)指向/var/www/old
我的apache配置当前设置为:

NameVirtualHost 1.2.3.4:80

<VirtualHost 1.2.3.4:80>
 ServerAlias *.mydomain.com
 DocumentRoot /var/www/old
</VirtualHost>

<VirtualHost 1.2.3.4:80>
 ServerName mydomain.com
 ServerAlias www.mydomain.com
 DocumentRoot /var/www
</VirtualHost>

<VirtualHost 1.2.3.4:80>
 ServerAlias dev.mydomain.com
 DocumentRoot /var/www/dev
</VirtualHost>
NameVirtualHost 1.2.3.4:80
ServerAlias*.mydomain.com
DocumentRoot/var/www/old
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot/var/www
ServerAlias dev.mydomain.com
DocumentRoot/var/www/dev
不幸的是,这并不像我预期的那样有效。使用此配置,只有第一个(通配符)VirtualHost条目可以正常工作


配置Apache执行此操作的正确方法是什么?

将通配符条目放在文件的最后。Apache将使用与浏览器发送的主机头相匹配的第一个VirtualHost。

是否可以为上述每个虚拟主机编写单独的配置文件,或者是否必须位于同一文件中才能允许优先顺序?@activatedGeek如果它们位于单独的文件中,优先顺序基于文件名。因此,在新的Ubuntu发行版中,您将找到名为
000 default
的默认文件。将它们放在同一个文件中并没有坏处,这样可以保证优先级。@ceejayoz:如何在文档根目录中设置通配符。在文档根目录中指定的我的一个文件夹在自动部署过程中被更改。