2011-06-29 7 views
45

हम कुछ बहुत ही बुनियादी mod_rewrite नियम है:mod_rewrite urlencoding पहले से ही urlencoded क्वेरी स्ट्रिंग पैरामीटर - इसे अक्षम करने का कोई तरीका?

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L] 

mod_rewrite अपना काम करने में लगता है, और यदि उपयोगकर्ता तक पहुँच रहा है:

something.swf?param=value, यह http://www.newdomain.com/something.swf?param=value

को सही तरह से पुनर्निर्देशित है समस्या है इस स्थिति में:

www.olddomain.com/something.swf?param=URL_ENCODED_VALUE 

क्या हो रहा है mod_rewrite लेता है यह स्वयं पर-urlencode फिर से क्वेरी स्ट्रिंग परम

तो क्या उपयोगकर्ता के साथ समाप्त होता है है:

www.olddomain.com/something.swf?param=URL_ENCODED_VALUE 

www.newdomain.com/something.swf?param=URL_ENCODED_VALUE_OF_URL_ENCODED_VALUE 

पर पुनः निर्देशित तो हम एक डबल urlencoded साथ खत्म मूल्य। boourns!

जबकि मुझे समझ में आता है कि हम \?(.*) बना सकते हैं ... ?$1 इसके लिए नियम, मुझे लगता है कि mod_rewrite को बताने का एक तरीका होना चाहिए क्वेरी स्ट्रिंग पैराम urlencode नहीं ... हम 2 नियमों का उपयोग करने से बचना चाहते हैं के बाद से वैध रास्ते हैं:

something.swf (no query string) 

और

something.swf?someparams... 

तो हां, आदर्श ... बस mod_rewrite बता: कृपया, क्वेरी स्ट्रिंग पैरामीटर का कोई urlencoding ... के माध्यम से नए URL सिर्फ प्रत्यक्ष passthru R=302

+2

दोह! जवाब है, एनई पैरामीटर। माफ़ कीजिये! –

+2

शर्त है कि यह था। क्या आप एक उत्तर प्रदान कर सकते हैं और इसे स्वीकार्य मान सकते हैं? (मुझे लगता है कि ऐसा करने के लिए समय सीमा है, लेकिन जितनी जल्दी हो सके इसे करें: पी) –

+0

हाँ कहता है कि मुझे 8 घंटे से कम समय में अपने प्रश्न का उत्तर देने के लिए 100 प्रतिनिधि की आवश्यकता है। बाद में जवाब देंगे। –

उत्तर

89

इसे पूरा करने का तरीका एनई (कोई भाग नहीं) पैरामीटर के माध्यम से है।

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,L] 

वास्तव में चाहिए

RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302,NE,L] 

इस के रूप में वे कर रहे हैं सभी क्वेरी स्ट्रिंग मान छोड़ने के लिए mod_rewrite के लिए बाध्य करेगा, पढ़ने/किसी भी एन्कोडिंग कर भागने के बिना।

जितना आसान है :)

+0

मेरी समस्या भी ठीक है, धन्यवाद! – Teekin

+0

वास्तव में इसके साथ जुड़े एक बग हो सकता है। एनई एक अच्छा विकल्प है जब तक कि यूआरएल के पथ खंड में यूआरएल एन्कोडेड वर्ण न हों। देखें: http://serverfault.com/questions/331899/apache-mod-rewrite-double-encodes-query-string-on-redirect – Ryan

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