2013-01-23 14 views
6

मैं यूआरआई अनुरोध को संरक्षित करते समय सभी गैर-सबडोमेन अनुरोधों को www पर रीडायरेक्ट करने का प्रयास कर रहा हूं।। यूटीएफ 8 वर्णों के साथ एचटीएसीएसी रीडायरेक्ट यूआरएल

मैं पुन: निर्देशन के लिए मेरे .htaccess फाइल में इस का उपयोग कर रहा: हालांकि

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302] 

समस्या यह है कि जब मैं इस तरह एक अनुरोध है:

example.com/search/?

www.example.com/search/?name=l%25C3%25A4kare 
: नाम = läkare

यह पर रीडायरेक्ट

जो कि गलत है, यह इसे दो बार एन्कोड कर रहा है। मैं इस के साथ की जाँच करें:

<?php 

echo rawurlencode('läkare');//outputs l%C3%A4kare 
echo "\n"; 
echo rawurldecode('l%25C3%25A4kare');//outputs l%C3%A4kare 
echo "\n"; 
echo rawurldecode(rawurldecode('l%25C3%25A4kare'));//outputs läkare 

ऐसा क्यों है यह दो बार एन्कोडिंग है और मैं इसे कैसे है कि ऐसा करने से रहते हो? मैं 1 एन्कोडिंग के साथ ठीक हूं लेकिन 2 बहुत अधिक है।

उत्तर

7

आपको NE (कोई बच नहीं) अपने नियम के लिए ध्वज फिर से लिखने की आवश्यकता है। इससे पहले से बचने वाली क्वेरी स्ट्रिंग को डबल से बचने से रोका जाएगा:

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302,NE]