2009-04-22 15 views
5

(मैं जानता हूँ कि यह एक प्रोग्रामिंग सवाल से प्रति नहीं है, लेकिन यह नियमित अभिव्यक्ति शामिल है, तो कम से कम यह सीमा रेखा है ...)अपाचे और mod_rewrite: डोमेन रीडायरेक्ट करें उपनिर्देशिका

स्थापना:

विंडोज़ पर mod_rewrite के साथ अपाचे 2.0। दो डोमेन, चलिए उन्हें डोमेन 1.example और domain2.example कहते हैं। मैं एक ही सर्वर ("server1") पर दोनों डोमेन होस्ट करना चाहता हूं, इसलिए मैं उन्हें एक ही आईपी पते पर इंगित करता हूं।

अब, यदि उपयोगकर्ता अपने ब्राउज़र में "domain2.example" टाइप करता है, तो मैं चाहता हूं कि वह सर्वर पर एक उपनिर्देशिका ** में समाप्त हो जाए, लेकिन वह डोमेन छोड़ दें जिसे उसने बरकरार रखा है ("domain2.example/domain2 /")। पुनर्निर्देशन को निश्चित रूप से इस डोमेन/निर्देशिका के अंतर्गत पृष्ठों पर सभी पूर्ण और सापेक्ष लिंक छोड़ना चाहिए।

क्या यह mod_rewrite (या अपाचे वर्चुअल होस्ट या अन्य विधि) के साथ संभव है, और मैं इसे कैसे कर सकता हूं?

** इस मामले में "उपनिर्देशिका" वास्तव में डिस्क पर फ़ाइल फ़ोल्डर नहीं है, लेकिन अपाचे "स्थान" निर्देश के साथ एक आभासी फ़ोल्डर है।

धन्यवाद।

उत्तर

2

मुझे विश्वास नहीं है कि आपको mod_rewrite का उपयोग करने की आवश्यकता है, तो आप इसके सुझाव के लिए vhosts का उपयोग करने में सक्षम होना चाहिए। ऐसा करने के लिए, आपके पास servername domain2.example के साथ एक एकल vhost होगा जो आपके इच्छित निर्देशिका को इंगित करता है। यह domain1.example के लिए ServerAlias ​​निर्देश का भी उपयोग करेगा, इसलिए इसके लिए अनुरोध उसी निर्देशिका पर जाते हैं।

ServerAlias और DocumentRoot के लिए प्रलेखन देखें। यह भी ध्यान रखें कि यदि आप यूआरएल में निर्देशिका दिखाना चाहते हैं, तो आप को mod_rewrite का उपयोग करने की आवश्यकता होगी।

3

मानते हैं कि डोमेन स्वतंत्र हैं, सलाह दी गई समाधान वर्चुअल होस्ट है।

आप apache website पर प्रलेखन पा सकते हैं।

+0

होना तय था विल DocumentRoot निर्देश (vhost में कॉन्फ़िगरेशन सेक्शन) "उपनिर्देशिका" को आगे बढ़ाने के लिए काम करता है जो वास्तव में "स्थान" है और सर्वर पर भौतिक फ़ाइल फ़ोल्डर नहीं है? – ObiWanKenobi

+0

स्थान के साथ आपका मतलब क्या है और फ़ाइल फ़ोल्डर नहीं है? मुझे लगता है कि आपके पास कहीं index.html/index.php/index.cgi है और आपने दस्तावेज़ रूट को उस फ़ोल्डर में रखा है जहां वह फ़ाइल स्थित है। –

+0

"स्थान" के साथ मेरा मतलब यह है: http: //httpd.apache। संगठन/दस्तावेज़/2.0/mod/core.html # स्थान विशिष्ट रूप से सेटहैंडलर निर्देश के साथ संयुक्त: http://httpd.apache.org/docs/2.0/mod/core.html#sethandler तो कोई भौतिक नहीं है फ़ाइल (index.htm, index.php, जो भी हो), बल्कि एक "हैंडलर" (pls_handler, यानी mod_plsql, मेरे विशिष्ट मामले में) को अग्रेषित करने के लिए। – ObiWanKenobi

6

मुझे लगता है कि आपको अपाचे कॉन्फ़िगरेशन तक पहुंच नहीं है, अन्यथा, हाँ, आभासी होस्ट आपका सबसे अच्छा विकल्प हैं। आप नहीं है, तथापि, यह एक .htaccess फाइल में डाल सकते हैं करते हैं सकता है और चाल करना चाहिए:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(.+)\.yourwebsite\.com$ 
RewriteRule ^/(.*)$ /path/to/your/subdomains/%1/$1 [L] 

तो http://foo.yourwebsite.com/bar के लिए एक अनुरोध /path/to/your/subdomains/foo/bar

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