2010-06-03 170 views
4

我有域名,我们将其称为“mydomain.com”,我想下面的虚拟主机架设在以下方法来解决:Apache配置与通配符/非通配符子域混合

  • 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> 

不幸的是,这不像我预期的那样工作。使用此配置,只有第一个(通配符)VirtualHost条目可以正常工作。

什么是正确的方式来配置Apache来做到这一点?

回答

4

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

+1

这是有效的。谢谢! – SoupNutsy 2010-06-03 19:24:52

+0

是否可以为每个上述虚拟主机编写单独的配置文件,还是有必要将文件放在同一个文件中以允许优先顺序? – activatedgeek 2015-01-02 21:24:03

+1

@activatedGeek如果它们在单独的文件中,优先级基于文件名。在一个新的Ubuntu发行版中,出于这个原因,您会找到名为'000-default'的默认文件。不伤害把它们放在同一个文件中,以保证优先权。 – ceejayoz 2015-01-02 21:27:04