2009-04-16 14 views
59

Tüm farklı bir sanal ana bilgisayar kullanarak app1.example.com, example.com ve *.example.com URL'lerine sahip olmak istediğim tuhaf bir durum var. Bu benim sahip olduğum şey (example.com hariç, sadece daha da karmaşık hale getiriyor).Virtualhost Wildcard Subdomain ve Statik Subdomain için

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

Sorun, çakışmalarıdır. İlk listelenen hangisi önce kazanır. Hem joker sanal konak hem de özel bir bilgisayarı nasıl barındırabilirim?

Not: Yapılandırmada yalnızca DocumentRoot'u değiştirmiyorum, bu nedenle DocumentRoot değişkenini değiştirmek için mod_rewrite'u kullanarak düzeltmeyin.

cevap

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> 

Çalışır. Açık bir eşleşme yoksa, ilk giriş varsayılan olur. Bu yüzden, app.otherexample.com adresine sahip olsaydınız, buna app1.example.com olarak yakalanırdı.

+1

altında da daha bilgi sadece soru var

<VirtualHost *:80> ServerAlias *.example.com VirtualDocumentRoot /var/www/%1/ </VirtualHost> 

yeterli olacaktır? –

+0

Bu yönerge, isme dayalı sanal konakları etkinleştirir ve apache'ye port 80'deki tüm ip'leri (*) dinleyeceğini söyler. Apache 2.2 Belgeler: http://httpd.apache.org/docs/2.2/en/vhosts/name-based .html –

+3

'NameVirtualHost * 'u kaldırın: 80': AH00548: NameVirtualHost'un bir etkisi yoktur ve bir sonraki sürümde kaldırılacaktır – nerdoc

İlgili konular