Apache2 - एक उप डोमेन को दूसरे URL पर पुनर्निर्देशित करना


15

मेरे पास दो उप-डोमेन हैं, a.website.com और b.website.com, एक ही आईपी पते की ओर इशारा करते हैं। मैं b.website.com को a.website.com:8080 पर पुनर्निर्देशित करना चाहता हूं। मैं अपने .htaccess फ़ाइल में यह है ...

RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]

...लेकिन यह काम नहीं करता है।

क्या इसे काम करने का एक तरीका है?


.htaccessमूल निर्देशिका में निम्नलिखित को ब्याज की निर्देशिका से ऊपर जोड़ने का प्रयास करें : RedirectMatch ^/foo/$ /foo/bar/या RedirectMatch ^/foo/$ /bar/baz/। यह भी देखें कि अपाचे 2 को उपनिर्देशिका पर पुनर्निर्देशित करने के लिए कैसे प्राप्त करें
jww

जवाबों:


20

आप हमेशा एक साधारण VirtualHost का उपयोग कर सकते हैं:

<VirtualHost *:80>
  ServerName b.website.com
  RedirectPermanent / http://a.website.com:8080/
</VirtualHost>

यदि आप .htaccess फ़ाइल के साथ जाना पसंद करते हैं, तो आप सिर्फ रिवर्ट कंडीशन पर एक% चिन्ह गायब कर रहे हैं:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]

मैंने दोनों की कोशिश की और उन्होंने काम नहीं किया। मेरे पास mod_rewrite सक्षम है और मेरे पास एक अलग साइट फ़ाइल में VirtualHost है। क्या ऐसा कुछ है जो मुझे याद आ रहा है?
टेक्नीसियस

3
यह ठीक काम करता है। मुझे एक लूप पुनर्निर्देशित समस्या थी, क्योंकि मैं एक सबफ़ोल्डर को एक उपडोमेन इंगित कर रहा था, और वह सबफ़ोल्डर पुनर्निर्देशित कर रहा था। अब, मैं उस उपडोमेन को उस URL पर पुनर्निर्देशित करता हूं जो फ़ोल्डर से मेल खाता है, और दूसरा पुनर्निर्देशन ठीक होता है!
पासचलिस

कैसे ओ.टी. को संरक्षित करने के लिए http://या https://, जो भी रास्ता b.website.comपहले स्थान पर पहुँचा था?
गोलेर रामबलर

0

मुख्य उत्तर को लागू करना

पुनर्निर्देशित प्रकार

आप स्पष्ट रूप से पूर्वनिर्धारित के प्रकार को निर्दिष्ट कर सकते हैं।
मेरा सुझाव है कि आप पुनर्निर्देशन नियम का परीक्षण करते समय एक अस्थायी रीडायरेक्ट (302) का उपयोग करें।

# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation


# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]

निर्देशिका मिलान पैटर्न निर्दिष्ट करें

आप केवल उन अनुरोधों को पुनर्निर्देशित कर सकते हैं जो कुछ पैटर्न से मेल खाते हैं।

# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1


# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.