RedirectPermanent puis RewriteRule

WRInaute discret
Bonjour,

Désolé pour le titre de topic pas très explicite mais j'ai du mal à décrire mon problème (et donc du mal avec la fonction recherche ...).

J'utilise la réécriture d'URL sur mon site.

Code:
RewriteRule ^rubrique/page-([0-9]+)-(.*)\.html$ /rubrique/page.php?id=$1&name=$2 [L]

Suivant les excellents conseils donnés dans un article sur WRI ( :mrgreen: ), j'ai voulu rewrité mes backlinks erronés, afin d'éviter que des visiteurs arrivent sur le site avec une jolie erreur 404 et, pour une de ces URL, j'ai écrit ceci :

Code:
RewritePermanent /rubrique/page-10-mauvais-parametre.html /rubrique/page-10-bon-parametre.html

La redirection fonctionne, mais, en appelant la page /rubrique/page-10-mauvais-parametre.html, l'URL de la barre d'adresse se transforme en /rubrique/page-10-bon-parametre.html?id=10&name=mauvais-parametre . Ca fait un peu désordre.

C'est où que je fais une grosse bétise ?

Ailleurs sur le site, j'utilise exactement le même mécanisme mais en passent du dossier /rubrique1/ à /rubrique2/ et là, je n'ai pas de problème ...

Merci par avance.
 
WRInaute passionné
essaye d'ajouter un ? dans la redirection (ou de mettre l'url complète avec le nom de domaine) :
Code:
RewritePermanent /rubrique/page-10-mauvais-parametre.html /rubrique/page-10-bon-parametre.html?
Sinon le plus sur est de gérer ça en php.
 
WRInaute discret
Merci pour ton aide mais ... pas mieux pour l'instant.

J'aimerai autant que ça se passe dans le .htaccess et pas avoir à lister mes URL foireuse dans mes fichiers PHP.
 
WRInaute passionné
sinon tu ajoutes une condition à la règle de réécriture :
Code:
RewriteCond $0 ! ^rubrique/page-10-mauvais-parametre\.html$
RewriteRule ^rubrique/page-([0-9]+)-(.*)\.html$ /rubrique/page.php?id=$1&name=$2 [L]
 
WRInaute passionné
il faut laisser la redirection :
Code:
RewritePermanent /rubrique/page-10-mauvais-parametre.html /rubrique/page-10-bon-parametre.html
RewriteCond $0 !^rubrique/page-10-mauvais-parametre\.html$
RewriteRule ^rubrique/page-([0-9]+)-(.*)\.html$ /rubrique/page.php?id=$1&name=$2 [L]
 
WRInaute discret
Ah OK, je comprends la logique du truc. Mais le résultat est le même.

Par contre, j'ai du remplacer le $0 comme ça, sinon, il me faisait une erreur 500.

Code:
RewriteCond %{HTTP_HOST} !^rubrique/page-10-mauvais-parametre\.html$

Merci encore.
 
WRInaute passionné
essaye avec :
Code:
RewritePermanent /rubrique/page-10-mauvais-parametre.html /rubrique/page-10-bon-parametre.html
RewriteCond ${REQUEST_URI} !^/rubrique/page-10-mauvais-parametre\.html$
RewriteRule ^rubrique/page-([0-9]+)-(.*)\.html$ /rubrique/page.php?id=$1&name=$2 [L]
 
WRInaute discret
Je devais avoir une autre erreur puisque, après plusieurs essais, de plusieurs méthodes, celle du point d'interrogation fonctionne.

Code:
RewritePermanent /rubrique/page-10-mauvais-parametre.html /rubrique/page-10-bon-parametre.html?

Par contre, j'ai un ?à la fin de l'adresse, c'est pas très joli, mais au moins, ça permettra de rediriger crrectement les moteurs et ne pas générer de Duplicate Content.

Merci
 
Discussions similaires
Haut