Htaccess et changement de nom de variable

Nouveau WRInaute
Bonjour à tous,

Je vous explique mon problème.
Je souhaite rediriger dans mon fichier htaccess les url du type suivant :
-www.site.com/index.php?oldparam=xxx
-www.site.com/index.php?oldparam=yyy
-www.site.com/index.php?oldparam=zzz
en
-www.site.com/index.php?newparam=xxx
-www.site.com/index.php?newparam=yyy
-www.site.com/index.php?newparam=zzz

etc...

Y a t il des gouroux htaccess dans l'assemblée pour trouver la solution ?
Merci
 
WRInaute impliqué
Essaie ça

Code:
RewriteCond %{QUERY_STRING} ^oldparam=(.*)$
RewriteRule index\.php /index.php?newparam=%1 [R=301]

Bon, la redirection c'est à toi de voir si tu la veux. Si tu ne la veux pas, enlève ce qui est entre [].

Vap
 
WRInaute accro
RewriteCond %{QUERY_STRING} ^oldparam=(.*)$
cela veux dire que la chaine commence a 'old.... alors qu'elle commence a partir de l'index, donc ne pas mettre le début de chaine (^) si le serveur le permet répond au problème

pour la redirection , je l'écrirais comme ceci:
Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule ^$   /index.php?newparam=%1 [QSA,L]
 
WRInaute impliqué
@KOogar,

J'aurais du tester effectivement.

Du coup j'ai une question aussi. A quoi sert le QSA puisqu'on met une autre chaîne après le '?' ?

Sinon, ta règle ne se déclenche pas chez moi avec ^$ en partie gauche.

Et enfin, si on veut une redirection 301, [QSA,L,R=301] dans ta règle crée une boucle infinie. C'est le QSA qui pose problème.

@auboutdufil, ce qui suit marche chez moi:

Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule index\.php /index.php?newparam=%1 [R=301,L]
 
Nouveau WRInaute
Merci mais du coup j'ai joué mon petit joueur avec un 301 en php

J'ai pas pu le faire en htaccess car je dois rediriger une liste de valeur en pas toutes les valeurs...
En fait, je ne dois pas rediriger tous les oldparam en newparam, je sais pas si je suis clair... :roll:
 
WRInaute impliqué
C'est clair maintenant.

Tu dois encore pouvoir le faire en .htaccess, mais c'est peut etre plus simple en PHP.
 
WRInaute accro
Vap a dit:
@KOogar,

J'aurais du tester effectivement.

Du coup j'ai une question aussi. A quoi sert le QSA puisqu'on met une autre chaîne après le '?' ?

Sinon, ta règle ne se déclenche pas chez moi avec ^$ en partie gauche.

Et enfin, si on veut une redirection 301, [QSA,L,R=301] dans ta règle crée une boucle infinie. C'est le QSA qui pose problème.

@auboutdufil, ce qui suit marche chez moi:

Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule index\.php /index.php?newparam=%1 [R=301,L]

super de tester,

et en mettant l'url physique en absolue ? tu peux regarder si cela fonctionne sur ton serveur ?

Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule $ http://www.site.com/index.php?newparam=%1 [R,L]

Pour le QSA, je le mettais plus par habitude... si tu me dis que cela ne sert a rien de forcer l'ajout de la chaine des arguments, n'ayant jamais tester, je ne peux qu'apprendre :D
 
WRInaute impliqué
KOogar a dit:
super de tester,

et en mettant l'url physique en absolue ? tu peux regarder si cela fonctionne sur ton serveur ?

Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule $ http://www.site.com/index.php?newparam=%1 [R,L]

Pour le QSA, je le mettais plus par habitude... si tu me dis que cela ne sert a rien de forcer l'ajout de la chaine des arguments, n'ayant jamais tester, je ne peux qu'apprendre :D

Moi aussi j'ai appris car je croyais que la query string commençait après le ? :wink:

Ca marche avec l'URL en dur. Note que ce qui suit marche aussi:

Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule $ /index.php?newparam=%1 [R,L]

Ce qui ne marchait pas est:


Code:
RewriteCond %{QUERY_STRING} oldparam=(.*)$
RewriteRule ^$ /index.php?newparam=%1 [R,L]
 
WRInaute accro
super, c'est le top sur ce coup avec des "redirections massives" en .htaccess :D

si tu as encore ton serveur d'allumé, peux-tu voir si en remplacant la globale QUERY_STRING par REQUEST_URI le code ronronne toujours ?

Code:
 RewriteCond %{REQUEST_URI} oldparam=(.*)$
RewriteRule $ /index.php?newparam=%1 [R,L]
 
WRInaute impliqué
KOogar a dit:
super, c'est le top sur ce coup avec des "redirections massives" en .htaccess :D

si tu as encore ton serveur d'allumé, peux-tu voir si en remplacant la globale QUERY_STRING par REQUEST_URI le code ronronne toujours ?

Code:
 RewriteCond %{REQUEST_URI} oldparam=(.*)$
RewriteRule $ /index.php?newparam=%1 [R,L]

Ca marche pas...
 
WRInaute accro
yep,

devrait marcher ? si tu es dans le coin... pour un ptit look after it

Code:
RewriteCond %{REQUEST_URI} index.php?oldparam=(.*)$
RewriteRule $ /index.php?newparam=%1 [R,L]
 
Discussions similaires
Haut