2010-09-02 9 views
14

मैं अपनी साइट्स में से किसी एक को कैशिंग में बना रहा हूं, और मुझे लगता है कि अगर mod_rewrite के साथ कोई शर्त जोड़ने का कोई तरीका है तो केवल तभी लागू करें जब अनुरोध पर क्वेरी स्ट्रिंग खाली है।एक खाली क्वेरी स्ट्रिंग के लिए पुन: लिखें

उदाहरण के लिए, मुझे पता है कि अगर मैं

http://www.example.com/index.home.html 

लेकिन एक क्वेरी स्ट्रिंग के साथ किसी भी अनुरोध पर

http://www.example.com/ 

लोड पेज की तरह कोई क्वेरी स्ट्रिंग के साथ एक अनुरोध हो सकता है, अच्छा लगेगा जैसे कि

http://www.example.com/?id=32 

सामान्य रूप से लोड करने के लिए और फिर से लिखने से प्रभावित नहीं होता है।

मुझे क्या याद आ रही है?

उत्तर

32

मैंने इसे समझ लिया।

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^/$ /index.home.html 
बेशक

, वहाँ एक बेहतर तरीका है, मैं इसे जानने में खुशी होगी: यह बहुत अच्छी तरह से चाल करने के लिए लगता है।

+0

भयानक धन्यवाद! वास्तव में एक उत्पादन मुद्दे को ठीक करने में मेरी मदद की। – URB

3

मैं इस लोगों को बहुत पुरानी है, लेकिन बेहतर विकल्प है:

RewriteCond %{QUERY_STRING} -n 
RewriteRule ^/$ /index.home.html 
+1

यह बेहतर क्यों है? –

0

खाली QueryString के खिलाफ मिलान करने के लिए, हम ^$ हमारी स्थिति पैटर्न में का उपयोग करें। निम्न नियम /file.html से /file2.html पर पुनर्निर्देशित करता है लेकिन यह स्थिति के कारण /file.html?querystring को पुनर्निर्देशित करने में विफल रहता है।

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^/?file.html$ /file2.html? [L,R] 

नियम के अंत में एक खाली प्रश्न चिह्न महत्वपूर्ण के रूप में इसे छोड़ देता है पुराने क्वेरी स्ट्रिंग अन्यथा पुनः निर्देशित यूआरएल की तरह /file2.html?querystring दिखेगा।

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