2009-04-16 18 views
59

मेरे पास एक अजीब स्थिति है जहां मैं यूआरएल app1.example.com, example.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 कॉन्फ़िगरेशन में नहीं बदल रहा हूं, इसलिए DocumentRoot चर बदलने के लिए mod_rewrite का उपयोग करके इसे ठीक नहीं किया जाता है।

उत्तर

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' करते हैं? –

+0

यह निर्देश नाम आधारित वर्चुअल होस्ट सक्षम करता है और पोर्ट 80 पर सभी आईपी (*) को सुनने के लिए अपाचे बताएगा। अपाचे 2.2 डॉक्स: http://httpd.apache.org/docs/2.2/en/vhosts/name-based .html –

+3

'NameVirtualHost *: 80': AH00548: NameVirtualHost का कोई प्रभाव नहीं है और अगली रिलीज में हटा दिया जाएगा – nerdoc

1

वाइल्डकार्ड का उपयोग केवल सर्वर नाम के बजाय सर्वरअलीस में किया जा सकता है। कुछ जो मुझे फेंक दिया था।

आपके उपयोग के मामले के लिए, निम्न पर्याप्त होना चाहिए

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

बस एक सवाल ही नहीं है https://www.chris-shaw.com/blog/using-wildcards-in-virtual-hosts-on-apache

संबंधित मुद्दे