2009-04-16 162 views
59

我有一個奇怪的情況,我想要所有使用不同虛擬主機的網址app1.example.comexample.com*.example.com。這是我的(不包括example.com,因爲它只是讓它變得更加混亂)。虛擬主機對於通配符子域和靜態子域

<VirtualHost *> 
    ServerName app1.example.com 
    ServerAlias app1.example.com 

    DocumentRoot = /var/www/app1 
    # Other configuration for this app here 

</VirtualHost> 

<VirtualHost *> 
    ServerName wildcard.example.com 
    ServerAlias *.example.com 

    DocumentRoot = /var/www/wildcard 
    # other configuration for this app here 

</VirtualHost> 

問題是它們有衝突。無論哪一個首先上市。我該如何託管通配符虛擬主機和特定的虛擬主機?

注意:我不只是在配置中更改DocumentRoot,所以使用mod_rewrite來更改DocumentRoot變量不能解決它。

回答

134
<VirtualHost *:80> 
    DocumentRoot /var/www/app1 
    ServerName app1.example.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /var/www/example 
    ServerName example.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /var/www/wildcard 
    ServerName other.example.com 
    ServerAlias *.example.com 
</VirtualHost> 

應該工作。如果沒有明確的匹配,第一個條目將成爲默認條目。所以如果你有app.otherexample.com指向它,它會被捕獲app1.example.com。

+1

也更多信息,只是一個問題,是什麼`了NameVirtualHost *:80`呢? – 2014-07-28 10:44:48