2011-10-26 15 views
17

मैं से रीडायरेक्ट करना होगा:इनको 301 रीडायरेक्ट फ़ोल्डर, लेकिन नहीं सबफ़ोल्डर

http://example.com/folder

http://example.com/newfolder को

लेकिन छोड़:

http://example.com/folder/subfolder

यह कहां है। क्या यह संभव है? मैं इसे रीडायरेक्ट अराजकता के ढेर के बिना ऐसा नहीं कर सकता।

उत्तर

3

मैं सिर्फ इस में भाग है और यहाँ समाधान मैं के साथ आया है। मैं इस विधि को पसंद करता हूं क्योंकि यह किसी भी उपनिर्देशिका को पुनर्निर्देशित नहीं करता है।

RewriteCond %{REQUEST_URI} ^/root-directory[/]? 
RewriteCond %{REQUEST_URI} !^/root-directory/+[/]? 
RewriteRule (.*) http://www.example.com/ [R=301,L] 
+2

billynoah का जवाब इस के लिए एक बेहतर और क्लीनर समाधान है। – Jestep

+0

मैं किसी अन्य साइट पर केवल घर रीडायरेक्ट करने के लिए करना चाहते हैं। उप पृष्ठ नहीं। 'example.com'' newsite.com' –

3

शायद:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/folder[/]? 
RewriteCond %{REQUEST_URI} !^/folder/subfolder[/]? 
RewriteRule (.*) /newfolder/$1 [R=301,L] 

यह/फ़ोल्डर/newfolder रीडायरेक्ट करना चाहिए लेकिन/फ़ोल्डर बाहर छोड़/सबफ़ोल्डर

1

कौन सा सर्वर आप उपयोग कर रहे हैं? आप उदाहरण उपयोग mod_rewrite के लिए आप अपाचे का उपयोग करता है, तो हो सकता है और इस

RewriteEngine On 
    RewriteOptions Inherit 
    RedirectMatch permanent ^/folder/$ http://example.com/newfolder 
    #I haven't tested the above redirect btw^

की तरह कुछ करते हैं और कर दिया है कि अपने/फ़ोल्डर/निर्देशिका में .htaccess फ़ाइल में (यह मानते हुए आप अपाचे की सेटिंग बदल सकते हैं, जिसका अर्थ है आप विकल्प होता है AllowOverride कि वर्चुअल होस्ट के सभी)

यहाँ कुछ अधिक जानकारी http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

+1

यह सबसे अच्छा जवाब है क्योंकि एक अपाचे vhost.conf फ़ाइल में एक आभासी पोर्ट से इसका इस्तेमाल कर सकते हैं। मैंने इसका परीक्षण किया, यह काम करता है। धन्यवाद, साइफ 3 आर! नीचे –

27

Jestep के रीडायरेक्ट के ऊपर "/ रूट निर्देशिका" जवाब लेकिन रीडायरेक्ट करने के लिए "/ रूट निर्देशिका /" विफल रहता है। यह तय किया जा सकता है और सरलीकृत बस द्वारा:

RewriteCond %{REQUEST_URI} ^/folder[/]?$ 
RewriteRule (.*) /newfolder [R=301,L] 

इस रीडायरेक्ट करेगा "/ फ़ोल्डर" और "/ फ़ोल्डर /" लेकिन सभी उप-निर्देशिका अकेला छोड़ दें।

+1

मेरे उदाहरण से काफी बेहतर है। – Jestep

+1

@PrabuGuna - आपको स्टैक ओवरफ़्लो खोजना चाहिए - यदि कोई जवाब खोजने में असमर्थ है तो इसे एक प्रश्न के रूप में पोस्ट करें। – billynoah

1

मैं मिश्रित सफलता के साथ यहाँ अन्य तरीकों की कोशिश की है। मैं किसी भी तरह से अपाचे विशेषज्ञ नहीं हूं, लेकिन यहां एक साधारण लाइनर है जो हर बार मेरे लिए काम करता है। मैं सिर्फ Redirect के बजाय RedirectMatch का उपयोग करें और, पर या बस स्लैश से पहले मैच का समापन होना एक बहुत ही सरल रेगुलर एक्सप्रेशन से शामिल जिसका अर्थ है कि उपनिर्देशिका एक मैच के रूप में योग्य नहीं करनी चाहिए।

RedirectMatch 301 ^/folder[/]?$ /newfolder

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