2011-11-14 10 views
5

यदि एनएनवी सत्य है या परिभाषित किया गया है (यदि परिभाषित नहीं किया गया है, तो गलत माना जाता है) तो मुझे रिवाइटकंड स्टेटमेंट का एक सेट चलाने की आवश्यकता है। मैं का उपयोग करने की कोशिश कर दिया गया है:। एचटीएसीएसी परीक्षण यदि ENV सत्य है या परिभाषित

RewriteCond %{ENV:IS_MOBILE} ^true$ 
RewriteCond ... 

और (यकीन नहीं करता है, तो यह और भी मान्य है)

RewriteCond %{ENV:IS_MOBILE} !=true 
RewriteCond... 

लेकिन न तो काम करने के लिए लग रहे हैं। किसी भी तरह से मैं यह कर सकता हूँ?

उत्तर

10

यहाँ एक वास्तविक जीवन नमूना आप समाधान खोजने के लिए मदद करनी चाहिए कि क्या है: मेजबान "s" या "स्थिर" से शुरू होता है

तो एक वातावरण चर "स्थिर" कहा जाता है बना सकते हैं और सेट इसे करने के लिए "1" :

RewriteCond %{HTTP_HOST} (s|static)\.mysite\.com$ 
RewriteRule (.*) - [QSA,E=STATIC:1] 
फिर

आप के लिए क्या लग सकता है: यदि मेरी मेजबान "स्थिर" है तो फ़ाइलें "स्थिर" (img और इसी तरह) माना जाता है तो बंद करो:

RewriteCond %{ENV:STATIC} 1 
RewriteRule (.*)\.(pdf|jpg|jpeg|gif|png|ico)$ - [L] 

अब अगर आप सुनिश्चित करना चाहते थे था टी परिवर्तनीय मौजूद नहीं है, बस जांचें कि यह खाली है या नहीं। यहाँ मेरी नियम सिर्फ पिछले के बाद बताया गया है: यह जाँच करता है, तो चर खाली नहीं है, और यदि हां, वहाँ एक त्रुटि = 404 (अनुकरण करने के लिए "नहीं मिला"):

RewriteCond %{ENV:STATIC} !^$ 
RewriteRule (.*) /404.php [L] 

आपके मामले में अगर आपके env नहीं है खाली आप लगता है यह सच है:

RewriteCond %{ENV:IS_MOBILE} !^$ 
RewriteCond... 

आपके मामले में अगर आपके env है के बराबर होती है, वास्तव में स्ट्रिंग के बराबर है "के true" आप लगता है यह "सच":

RewriteCond %{ENV:IS_MOBILE} true 
RewriteCond... 

उम्मीद है कि यह मदद करता है।

+0

यह मूल रूप से मुझे मेरे समाधान के लिए इंगित करता है लेकिन यह ध्यान दिया जाना चाहिए कि कुछ मामलों में, अपाचे किसी भी मानक पर्यावरण चर को पट्टी नहीं करेगा, इसलिए आपको वर्चुअल होस्ट के अंदर अपने ENV को भी परिभाषित करना होगा। – Ashley

+0

ओउप्स मैं केवल vhost पर्यावरण में काम कर रहा हूं इसलिए यह कोई समस्या नहीं है लेकिन आपको यह नोटिस करने का अधिकार है। एक बार फिर धन्यवाद। –

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