2010-06-03 166 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