[RESOLU] htaccess - RewriteRule - problème de rédirection d'adresses "compliquées"

Petit nouveau ! | 3 Messages

18 mars 2025, 22:17

Bonjour,
suite à une erreur d'enregistrement d'adresses dans des QRCodes j'ai besoin de rediriger les adresses dans le .htaccess
depuis :
[domaine]/ecrire/?exec=article&action=redirect&type=article&id=42
[domaine]/ecrire/?exec=article&action=redirect&type=article&id=41

vers les pages
article42.html
article41.html

Je suis loin d'être un spécialiste des fichiers .htaccess
mais j'ai essayé depuis la racine du site :
RewriteEngine on 
RewriteRule  ^/ecrire/?exec=article&action=redirect&type=article&id=42$ article42.html [QSA,L]

j'ai essayé depuis le dossier /ecrire/ :
RewriteEngine on 
RewriteRule  ^?exec=article&action=redirect&type=article&id=42$ article42.html [QSA,L]

et en "expression reguliere" pour ne garder que le numéro de fin
RewriteEngine on 
RewriteRule ^(.+)id=42$ article42.html [L]

Rien n'y fait. L'adresse est interprétée et m'amène à l'interface de connexion du backoffice.
J'ai testé avec des redirections simple elles fonctionnent (de truc.html vers machin.html).
Donc le .htaccess est bien exploité mais pas avec mes adresses avec passage de paramètres.
Je ne sais pas si c'est un problème de syntaxe ou de caractère à déspécialiser, ou même si c'est possible.

Bref si quelqu'un s'est déjà frotté au .htaccess et ses options avec ce type de redirection je suis preneur de piste de solution avant la crise de nerf :D

Mammouth du PHP | 2703 Messages

18 mars 2025, 23:16

il faut utiliser QUERY_STRING pour manipuler ce qu'il y a après ?
exemple :
RewriteCond %{QUERY_STRING} (^|.*&)marque=MAMARQUE(&.*|$)
RewriteRule (.*)$ http://%{HTTP_HOST}/votreurl?marque=MANOUVELLEMARQUE [L,R=301]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 mars 2025, 01:40

Et un petit outil très pratique pour tester/ajuster ses règles de htaccess :
https://htaccess.madewithlove.com/
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

19 mars 2025, 09:36

il faut utiliser QUERY_STRING pour manipuler ce qu'il y a après ?
exemple :
RewriteCond %{QUERY_STRING} (^|.*&)marque=MAMARQUE(&.*|$)
RewriteRule (.*)$ http://%{HTTP_HOST}/votreurl?marque=MANOUVELLEMARQUE [L,R=301]
Merci beaucoup ! Je ne connaissais pas le fonctionnement des QUERY_STRING. En mettant le htaccess dans le dossier /ecrire/ j'ai pu rediriger les adresses.

Petit nouveau ! | 3 Messages

19 mars 2025, 09:37

Et un petit outil très pratique pour tester/ajuster ses règles de htaccess :
madewithlove
Oh merci ! Celui la je vais le garder au chaud. Il a sauvé ma nuit :D