2011-03-25 17 views
6

को छोड़कर सब कुछ के लिए अपाचे mod_rewrite हाय मैं रूट फ़ोल्डर को छोड़कर सब कुछ पुनर्निर्देशित करने के लिए एक mod_rewrite नियम लिखने की कोशिश कर रहा हूं। उदाहरण के लिए, www.example.com को index.html फ़ाइल लोड करना चाहिए अन्य सभी चीज़ों के लिए, उदा। www.example.com/tag,/टैग उप-निर्देशिकारूट

में एक स्क्रिप्ट के लिए पारित किया जाना चाहिए अभी मैं

RewriteCond %{REQUEST_URI} !^/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) app/webroot/$1 [L] 

है और वह भार index.html ठीक लेकिन/टैग को पास नहीं है webroot। मुझे 404 त्रुटि मिल रही है।

धन्यवाद

+0

यदि आप रीराइट नियम (। *) Http://yourdomain.com/app/webroot/$1 [एल, आर] में पुनर्लेखन नियम बदलते हैं तो यूआरएल क्या है जिसे आपको रीडायरेक्ट किया जाता है? – Wige

उत्तर

7

इस हालत समस्या है:

RewriteCond %{REQUEST_URI} !^/ 

आप कुछ भी है कि के साथ '/' फिर से लिखा नहीं है शुरू होता है कह रहे हैं, और सब कुछ '/' से शुरू होता है। आप अंत में $ उपयोग करने की आवश्यकता:

RewriteCond %{REQUEST_URI} !^/$ 

मुझे यकीन है कि आप, सब पर शासन की जरूरत है हालांकि, क्योंकि अगर index.html मौजूद अन्य दो नियम स्वचालित रूप से उस का ख्याल रखना होगा नहीं कर रहा हूँ। बस कुछ भी है कि नहीं है के पुनर्लेखन के लिए इन का उपयोग भौतिक रूप से मौजूद:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ app/webroot/$1 [L,QSA] 

और आप अपने अनुप्रयोग में एक 404 त्रुटि संभाल कर सकते हैं, जब से तुम उप निर्देशिकाओं के लिए करने के लिए वैसे भी होगा।

+0

बिल्कुल सही! आपको बहुत - बहुत धन्यवाद! मैं इसे समझने की कोशिश कर 4 घंटों तक अपना सिर खटखटा रहा हूं। – sho

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