Redirection page par page - problème avec ? - Help

WRInaute discret
Bonjour à tous, j'ai un problème de redirection et je n'arrive pas à trouver comment faire

J'ai un changement de CMS et donc toutes les urls de mon site vont changer :

Ancienne url :
exemple.com/boutique/fiche_produit.cfm?ref=26&type=35&num=1

Nouvelle url:
exemple.com/dossiera/190-machin.html

Comment faire pour rediriger en htaccess des url de ce type?

J'ai beau chercher et me creuser la tête j'ai toujours le point d'interrogation qui m'enquiquine.

Please Help ! J’ai la tête qui bouillonne.


Voici mes différents tests

Code:
RewriteRule ^boutique/fiche_produit.cfm(.*26&type=35&num=1)  http://www.exemple.com/dossiera/190-machin.html [R=301,L]

Elle ne marche que s'il n'y a pas de point d'interrogation
ça marche pour
exemple.com/boutique/fiche_produit.cfmref=26&type=35&num=1
mais ça marche plus dès que je mets le point d'intérrogation ?
exemple.com/boutique/fiche_produit.cfm?ref=26&type=35&num=1


Code:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^boutique/fiche_produit.cfm(.*) http://www.exemple.com/? [R=301,L]

Celle là elle marche si je veux rédiriger vers la page d'accueil
mais je veux renvoyer page par page.
exemple.com/boutique/fiche_produit.cfm?ref=26&type=35&num=1
revoie sur example.com
 
WRInaute occasionnel
Salut à tous!

Tu dois "échapper" avec un backslash les caractères qui ont une signification spéciale pour les Regex que tu testes, pas besoin dans l'url de résultat.

Donc pour ton exemple le point et le point d'interrogation :

Code:
RewriteRule ^boutique/fiche_produit\.cfm\?ref=26&type=35&num=1  http://www.exemple.com/dossiera/190-machin.html [R=301, NC,L]

Ajoutes les captures là ou ca t'arranges, je connais pas ton cas en entier.

N'oublies pas non plus le NC que j'ai ajouté là (R=301, NC, L) afin d'éviter la prise en compte de la casse dans ton url de départ.

Un tableau des caractères spéciaux dans un très bon site pour les regex :

http://www.regular-expressions.info/refquick.html

A+
 
WRInaute discret
Bonjour Loubet et merci

Effectivement, ce qui est dingue c'est que j'ai eu l'idée de mettre le ? à la fin et tout de suite après avoir vérifié que ça marchait : j'ai eu ta réponse. Télépathie ??

Par contre si j'ai 1000 redirections produit par produit je vais exploser le htaccess ???
 
WRInaute discret
Bonjour François,

Merci pour le tableau des expressions

Alors j'ai enlevé l'espace avant le N (qui me faisait une erreur 500) et malheureusement ça ne rédirigeait pas

Par contre, le code de loubet avec le ? à la fin, CA MARCHE !!!

Code:
RewriteCond %{QUERY_STRING} ^ref=26&type=35&num=1$
RewriteRule ^boutique/fiche_produit.cfm http://www.exemple.com/dossiera/190-machin.html?[R=301,L]

Mais je me vois déjà passer des jours à faire ce htaccess sur 1.000 produits et x catégories,

Une astuce pour faire des règles ?, un script ?, on sait jamais ;-)

Merci en tout cas à tous les deux, j'étais vraiment désespérée et j'avais la tête qui fumait ;-)
 
WRInaute impliqué
mieux vaux effectivement, rediriger tous les
boutique/fiche_produit.cfm
vers un script qui lui fera la redirection.
 
Discussions similaires
Haut