2012-06-18 11 views
6

नहीं मिला मैं एक फ़ोल्डर मेरी रूट निर्देशिका में "फ़ोल्डर 1" नाम हैआधुनिक पुनर्लेखन निर्देशिका यदि फ़ाइल/फ़ोल्डर

www.domain.com/ www.domain.com/folder1

मैं की जरूरत है www.domain.com पर सभी अनुरोधों को पुनर्निर्देशित करने के लिए जो फ़ोल्डर 1 में 404 त्रुटि हो जाती है। इसलिए जैसा:

www.domain.com/a_file.txt

तो a_file.txt मौजूद नहीं है, फ़ोल्डर 1 में देखो:

www.domain.com/folder1/a_file। txt

मैं इस, उप निर्देशिकाओं के लिए एक ही काम करने के लिए तो जैसे हैं:

www.domain.com/a_folder (यदि अनुप्रेषित यह जड़ में मौजूद नहीं है)

www.domain.com/folder1/a_folder

मैं जानता हूँ कि मैं RewriteCond% का उपयोग करना चाहिए {} REQUEST_FILE! -f लेकिन मैं इसे समझ नहीं कर पा रहे बाहर।

उत्तर

15
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/folder1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) folder1/$1 [L,R] 
  • पहले फिर से लिखने-cond सुनिश्चित करता है कि आप पाश नहीं है (मामले में फ़ाइल फ़ोल्डर 1 के अंदर मौजूद नहीं है या तो
  • दूसरा एक जाँच करता है कि लक्ष्य एक फ़ाइल
  • तीसरे नहीं है - कि यह कोई फ़ोल्डर नहीं है
  • और अंत में, यूआरएल को फिर से लिखना। L ध्वज का मतलब है कि यह अंतिम नियम लागू होता है (भले ही उसके बाद नियम हैं), R का मतलब रीडायरेक्ट है। यदि आप चाहें तो QSA ध्वज भी जोड़ सकते हैं क्वेरी-स्ट्रिंग paramete मूल को पारित आरएस को नए यूआरएल
+0

बिल्कुल लिखा गया था ... लूप से बचने और स्पष्टीकरण के लिए +1। – zessx

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