2010-05-14 7 views
5

मैं RewriteCond के आसपास मेरे सिर प्राप्त करने के लिए कोशिश कर रहा हूँ, और या तो एक स्थिर html पृष्ठ के लिए किसी भी अनुरोध को फिर से लिखने के लिए चाहते हैं (यदि वह मौजूद है), या एक विशिष्ट index.php के लिए (का उपयोग करते हुए एक 2-स्तर का अनुकरण करना जब तक अनुरोधित फ़ाइल मौजूद नहीं है)।हैं-वरना RewriteCond

if HTTP_HOST is '(www\.)?mydomain.com' 
    if file exists: "/default/static/{REQUEST_URI}.html", then 
     rewrite .* to /default/static/{REQUEST_URI}.html 
    else if file exists: {REQUEST_FILENAME}, then 
     do not rewrite 
    else 
     rewrite .* to /default/index.php 

मैं बहुत मुसीबत यह कर के लिए जब मैं HTTP_HOST के लिए परीक्षण करने के लिए की जरूरत नहीं है नहीं है:

तर्क उदाहरण देकर स्पष्ट करने। आखिरकार, यह एक। Htaccess फ़ाइल कई डोमेन के लिए अनुरोधों को संभालेगी।

मुझे लगता है मैं इस के आसपास vhosts साथ मिल सकता है पता है, लेकिन मैं इसे इस तरह से कैसे करना है यह पता लगाने करना चाहते हैं।

मैं अन्य झंडे से कुछ के साथ भी परिचित नहीं हूँ, उनमें से किसी काम के लिए यहाँ (एस श्रृंखला की तरह | सी, अगले | | एन या छोड़ दें) हो जाएगा?

अग्रिम धन्यवाद!


अद्यतन: मैं यह करने के लिए प्रबंधित किया है, लेकिन विकल्प का स्वागत करेंगे:

RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..* [NC] 
RewriteCond %{DOCUMENT_ROOT}/%1/static/%{REQUEST_URI}.html -f 
RewriteRule (.*)? /%1/static/$1.html [NC,L] 

RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..* [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* /%1/index.php [L,QSA] 

अद्यतन # 2: Gumbo के जवाब से मदद के साथ, एक और के साथ आया था। मुझे यह पसंद है कि अतिरिक्त डोमेन के मामले में इसे कम रखरखाव की आवश्यकता होगी। (धन्यवाद गम्बो!)

क्या कोई कारण हैं कि मुझे ENV चर सेट क्यों नहीं करना चाहिए?

RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..*$ [NC] 
RewriteRule^- [E=APP:%1] 

RewriteCond %{DOCUMENT_ROOT}/%{ENV:APP}/static/%{REQUEST_URI}.html -f  
RewriteRule (.*)? /%{ENV:APP}/static/$1.html [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* /%{ENV:APP}/index.php [L,QSA] 

उत्तर

4

मैं इसे इस तरह शायद करना होगा:

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ 
RewriteRule^- [S=2] 

RewriteCond %{DOCUMENT_ROOT}/default/static%{REQUEST_URI}.html -f 
RewriteRule !^default/static/ default/static%{REQUEST_URI}.html [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^default/static/ default/index.php [L] 

यह आपके अद्यतन उदाहरण के समान है। सिवाय इसके कि यदि पहला नियम उचित नहीं है तो पहला नियम निम्नलिखित दो नियमों को छोड़ देगा। और RewriteRule पैटर्न /default/static/ से शुरू होने वाले किसी भी पथ को बाहर करते हैं। लेकिन आपके नियम पहले से ही बहुत अच्छे हैं।

+0

धन्यवाद! जबकि मुझे इसके बारे में पता था, मुझे नो-रीराइट नियम के सिंटैक्स को नहीं पता था। इसने मुझे एक और समाधान के लिए विचार दिया जो वास्तव में वही था जो मैं चाहता था (मूल पोस्ट अपडेट किया गया)। एक बार फिर धन्यवाद! –

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