कुछ एचआरएल को पुनर्निर्देशित करने के लिए। htaccess निर्देश * नहीं

एक ऐसे एप्लिकेशन में जो

> htaccess  अपने PrettyURLs (मेरे मामले में केकेपीएचपी) के लिए रिवाइट्रूल्स पर भारी निर्भर करता है, मैं इस पुनर्लेखन से कुछ निर्देशिकाओं को बाहर करने के लिए निर्देशों को सही तरीके से कैसे सेट करूं? अर्थात्:

/appRoot/.htaccess
         app/
         static/

डिफ़ॉल्ट रूप से / appRoot / * के लिए प्रत्येक अनुरोध को app / webroot / index.php द्वारा उठाए जाने के लिए फिर से लिखा जा रहा है, जहां इसका विश्लेषण किया जा रहा है और संबंधित नियंत्रक क्रियाएं लागू की जा रही हैं । यह इन निर्देशों द्वारा .htaccess में किया जाता है:
RewriteBase /appRoot

RewriteRule ^$ app/webroot/     [L]
RewriteRule (.*) app/webroot/$1 [L]

अब मैं स्थिर / कुछ इस लेखन से कुछ निर्देशिकाओं को बाहर करना चाहता हूं। मैंने केक रिवाइट नियमों के साथ इस पहले के साथ प्रयास किया:
RewriteCond $1 ^(static|otherDir).*$ [NC]
RewriteRule (.*) - [L]

यह अब तक काम करता है कि अनुरोधों को फिर से लिखा नहीं गया है, लेकिन अब सभी अनुरोध छोड़े जा रहे हैं, यहां तक ​​कि वैध केक अनुरोध जो ^ (static | otherDir) से मेल नहीं खाते हैं। * $
मैंने इन नियमों के कई बदलावों की कोशिश की लेकिन मैं जिस तरह से काम करना चाहता हूं उसे काम नहीं कर सकता।
0
जोड़ा संपादित
विचारों: 1

3 उत्तर

पिछले नियमों से [एल] निकालें:

RewriteBase /appRoot

RewriteRule ^$ app/webroot/    
RewriteRule (.*) app/webroot/$1

[एल] का अर्थ है "यहां पुनर्लेखन प्रक्रिया को रोकें और किसी और पुनर्लेखन नियमों को लागू न करें।"

0
जोड़ा

और सही जवाब iiiiis ...

RewriteRule   ^(a|bunch|of|old|directories).* - [NC,L]

# all other requests will be forwarded to Cake
RewriteRule   ^$   app/webroot/   [L]
RewriteRule   (.*) app/webroot/$1 [L]

मुझे अभी भी यह नहीं पता है कि मूल निर्देशिका में index.php फ़ाइल को प्रारंभ में इन निर्देशों के साथ भी कहा जाता था। यह अब में स्थित है

/appRoot/app/views/pages/home.ctp

और केक के माध्यम से भी संभाला। इस जगह के साथ, मुझे लगता है कि यह भी काम करता होगा (माइक के सुझाव का थोड़ा बदला संस्करण, अवांछित):

RewriteCond $1      !^(a|bunch|of|old|directories).*$ [NC]
RewriteRule ^(.*)$  app/webroot/$1 [L]
0
जोड़ा

क्या आप निम्न नियमों पर शर्त लागू नहीं कर सकते हैं, लेकिन अस्वीकृति के साथ, जैसा कि (इसमें कुछ बदलाव के साथ, मैं .htaccess नियमों को याद रखने में बहुत अच्छा नहीं हूं, इसलिए झंडे गलत हो सकते हैं):

RewriteCond $1 !^(static|otherDir).*$ [NC]
RewriteRule ^$ app/webroot/ [L]

RewriteCond $1 !^(static|otherDir).*$ [NC]
RewriteRule ^$ app/webroot/$1 [L]
0
जोड़ा