J’ai un problème pour réécrire une URL. Je veux ceci :
http://www.foo.com/test.php?u=s1&id=12345&img=12
à
http://app.foo.com/12345-s1-12.test
Le premier paramètre u est une chaîne, les parameters id et img sont des entiers.
J’ai commencé avec quelque chose comme ça:
RewriteCond %{REQUEST_URI} ^/test.php?u=(.*)&id=(.*)&img=(.*)/ [NC] RewriteRule (.*) http://app.foo.com/%2-%1-%3.test [QSA,R=301,L]
Merci 🙂
MODIFIER :
Cela ne marche toujours pas mais je suis proche!
RewriteCond %{REQUEST_URI} ^/test.php [NC] RewriteCond %{QUERY_STRING} ^u=(.*)&id=(.*)&img=(.*) RewriteRule (.*) http://app.foo.com/%2-%1-%3.test [QSA,R=301,L]
Maintenant, ça me donne ce lien:
http://app.foo.com/12345-s1-12.test?u=s1&id=12345&img=12
Au lieu de :
http://app.foo.com/12345-s1-12.test
🙁
Résolu!
RewriteCond %{REQUEST_URI} ^/test.php [NC] RewriteCond %{QUERY_STRING} ^u=(.*)&id=(.*)&img=(.*) RewriteRule (.*) http://app.foo.com/%2-%1-%3.test? [R=301,L]
Placer un ?
à la fin de la RewriteRule supprime les informations de chaîne de requête précédentes.
Cela fonctionne parfaitement! Je l’ai utilisé – mais je me demande pourquoi l’URL cible affiche “% 3f” à la fin.
J’utilise:
RewriteCond %{REQUEST_URI} ^/ie/xx/yy.php [NC] RewriteCond %{QUERY_STRING} ^rubric=(.*)&nr=(.*) RewriteRule (.*) https://www.newdom.com/xx/yy.php?rubric=%1&nr=%2 [R=301,L]
Pourquoi% 3f est-il à la fin?