Bonjour messieurs,

Voici mon problème. J'ai une rewrite qui tourne sur mon serveur HTTP qui me redirige suivant la présence ou non d'un paramètre.

Le redirection en question doit juste me changer le nom de domaine de mon site : je dois passer sur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
www.monsite.fr ==> www.monsite.com
ou
www.monsite.com ==> www.monsite.fr
Donc, l'url (HOST + REQUESTURI + QUERY_STRING) reste la même à l'exception du .com qui passe en .fr (ou inversement)

Voici la rewrite rule :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
ProxyRequests Off
ServerName www.monsite.fr
RewriteEngine On
ProxyPreserveHost On
 
#Detection du nom de domaine
RewriteCond %{HTTP_HOST} ^www.monsite.fr$
 
#detection de langue
RewriteCond %{HTTP:Accept-Language} (^en)
 
#pas le paramètre 'rr=false' ==> on peut rediriger
RewriteCond %{QUERY_STRING} !.*rr=false$
 
RewriteRule ^/(.*)$ http://www.monsite.com/$1 [R=301,L]
Le problème qui se pose est lorsque que j'ai des urls encodées, du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
http://www.monsite.com/toto?param=avant%20espace
Je me retrouve alors avec l'url suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
http://www.monsite.fr/toto?param=avant%2520espace
Donc la question : Savez-vous comment faire pour que mon paramètre ne soit pas ré-encodé, et que mon url soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
http://www.monsite.fr/toto?param=avant%20espace
???

Merci d'avance.