Je bloque sur le rewriting des URL contenant un ?

Nouveau WRInaute
Bonjour,
après plusieurs jours d'apprentissage sur internet et d'essais par tâtonnement concernant le rewriting avec .htacess, je suis arrivé à plusieurs redirections qui marchent , comme par exemple :
RewriteRule ^permis-poids-lourds-annemasse(.+)$ /userfiles/redirections/Formations-au-Permis-LOURD.php [R=301,L]
RewriteRule ^(.+)/planning-stage-code-fill(.+)\.pdf$ /userfiles/redirections/Stage-CODE-Accelere-en-3-jours.php [R=301,L]

Pa contre, je bute actuellement sur celles ci, qui m'affiche ma page 404 :
#RewriteRule ^(.+)/Permis-D1--Transp.-en-Com.-16-places-$ /userfiles/redirections/Permis-D1-Transp.-en-Com.-16-places.php [R=301,L]
#RewriteRule ^(.+)/Permis-D1-(Transp.-en-Com.-16-places)$ /userfiles/redirections/Permis-D1-Transp.-en-Com.-16-places.php [R=301,L]

Comme l'URL complète :
"mon-site.com/?Formations-au-Permis-LOURD/Permis-D1--Transp.-en-Com.-16-places-"
comporte un ? et éventuellement des ( et ), je soupçonne d'abord le point d'interrogation comme cause de la non redirection, puis je pense aussi que les accolades sont aussi un handicap.

Qu'en pensez vous ?
Je ne pense que cela soit un problème pour les spécialistes visitant WebRankInfo...

j'ai essayé aussi avec des RewriteCond... mais je sais mal les utiliser...

Merci d'avance à l'âme bienveillante qui va m'aider à résoudre ce casse tête...

Cordialement, Stéphane
 
WRInaute passionné
effectivement toutes les données qui sont à droite du ? sont des paramètres et ne font donc pas parti à proprement parler de ton URL

les paramètres passées avec ton URL sont à exploiter dans tes programmes PHP (ne pas oublier le drapeau QSA dans ta règle de réécriture) ou dans ton htaccess avec des RewriteCond

également les points (.) sont des caratères réservés, il faut donc que tu les échappent (\.) dans tes expressions
 
Nouveau WRInaute
Merci pour votre aide rapide...
j'ai essayé plusieurs syntaxes dont celle ci, mais toujours rien... Noter qu'à droite il n'y a plus de paramètres. Je veux donc simplement shunter (ou escamoter) le ? pour pouvoir reconnaitre l'URL d'origine. il me faut peut être remplacer d'abord le ? par un - par exemple dans l'URL. mais je ne peux pas avoir accès au PHP, car je suis sur CMSimple_xh. je fais donc tout dans le htaccess.

RewriteRule ^(\?)Formations(.+)/Permis-D(.+)$ /userfiles/redirections/Permis-D-Transport-en-Commun.php [QSA,R=301,L] ne marche pas...

URL d'origine à remplacer =
https://www.monsite.com/?Formations-au-Permis-LOURD/Permis-D--Transport-en-Commun-
URL de destination =
/userfiles/redirections/Permis-D-Transport-en-Commun.php

Pouvez vous me proposer 1 ou 2 rewriterule que je puisse essayer ?

Merci pour votre patience... Stephane
 
WRInaute accro
Bjr,

et en capturant que la fin de la chaine :
Code:
RewriteCond   Permis-LOURD/([aZ-\.]+) [QSA,R=301,L]
RewriteRule   $  /userfiles/redirections/%1
 
Nouveau WRInaute
Bonjour,

Votre proposition m'a inspiré... merci de votre aide...
J'ai maintenant un rewriting avec des ? dans l'url, et cela marche !!! (enfin!)

Rappel :
URL d'origine à remplacer =
https://www.monsite.com/?Formations-au-Permis-LOURD/Permis-D--Transport-en-Commun-
URL de destination =
/userfiles/redirections/Permis-D-Transport-en-Commun.php

mon rewriting qui marche !
RewriteCond %{QUERY_STRING} ^(.*)Permis-D-(.*)$
RewriteRule ^$ /userfiles/redirections/Permis-D-Transport-en-Commun.php [R=301,L]

Grace à ce problème rencontré et avec votre aide (merci à tous) j'ai appris certaines choses sur les RewritCond (règles et syntaxe)

Stephane
 
Discussions similaires
Haut