2010-02-01 25 views
5

के लिए एकाधिक फ़ोल्डरों की जांच के लिए mod_Rewrite का उपयोग कैसे करें किसी दिए गए फ़ाइल के लिए एकाधिक फ़ोल्डर स्थानों की जांच के लिए mod_Rewrite नियम क्या हैं। उदाहरण के लिए, अगर मैं का एक फ़ोल्डर संरचना है:एक स्थिर फ़ाइल

public/ 
    css/ 
    library1/ 
     css/ 
    library2/ 
     css/ 

और मैं /css/somefile.css करने के लिए अनुरोध करना चाहता हूँ पहली public/css/ निर्देशिका की जाँच करने के लिए, तो फिर public/library1/css/public/library2/css/ को कैस्केड, 404 लौटाने एक परिसंपत्ति में से किसी में नहीं पाया जा सकता है, तो निर्देशिकाएं

मैं की तर्ज पर सोच रहा था:

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond library1%{REQUEST_URI} -f 
RewriteRule ^(.*)$ library1$1 [L] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond library2%{REQUEST_URI} -f 
RewriteRule ^(.*)$ library2$1 [L] 

लेकिन यह काम करने के लिए प्रतीत नहीं होता है - मैं एक गतिशील रूप से उत्पन्न रास्ते पर फ़ाइल होने की जाँच करने के लिए कैसे यकीन नहीं है।

उत्तर

6

इन नियमों का प्रयास करें:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/library1%{REQUEST_URI} -f 
RewriteRule ^css/.+ library1%{REQUEST_URI} [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/library2%{REQUEST_URI} -f 
RewriteRule ^css/.+ library2%{REQUEST_URI} [L] 
+0

कि के लिए चीयर्स - मैं% स्थान नहीं था दस्तावेज़ों को पढ़ने पर {DOCUMENT_ROOT} परिवर्तनीय। – DavidWinterbottom

+0

@ डेविडविंटरबॉटम: जब आप मौजूदा फाइलों, निर्देशिका आदि के लिए परीक्षण करना चाहते हैं तो आपको पूर्ण फाइल सिस्टम पथ की आवश्यकता है * अनुरोध \ _FILENAME * में पहले से ही पूर्ण फाइल सिस्टम पथ है लेकिन * अनुरोध \ _URI * केवल पूर्ण यूआरएल पथ है। – Gumbo

+0

@ गम्बो: 6 संदर्भ 'पुस्तकालय 2' लाइन नहीं होना चाहिए? –

1

संभवतः सर्वर चर में आपके विचार में शामिल नहीं है। लॉगिंग को डीबग में बढ़ाने का प्रयास करें, ताकि आप देख सकें कि क्या हो रहा है।

0

इस प्रयास करें:

something.dev/ library1 /style.css -> production.com/:

# Loads files from production server 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (library1|library2)/(.*)$ http://production.com/$1/$2 [R=302,L,NC] 

इस लक्ष्य को पूरा लाइब्रेरी 1/style.css something.dev/ library2/विक्रेता/सीएसएस/style.css -> production.com/ library2/विक्रेता/सीएसएस/style.css

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