2012-07-18 4 views
0

Je voudrais simplement créer une redirection 301, mais mon code ne fonctionne pas et renvoie une belle page 404 (-_-).Petit "hic" avec une redirection 301 htaccess

Je pense que le problème est le "?" Dans l'url, j'ai essayé d'y échapper mais ça ne marche plus.

RewriteRule ^produit.php?PDT_ID=473 /product.php?id_product=210 [R=301] 

Merci à jeter un oeil

Répondre

1

C'est une erreur commune. Comme le docs disent, pour tester des choses dans la chaîne de requête, vous devez utiliser une directive RewriteCond, comme ceci:

RewriteCond %{QUERY_STRING} PDT_ID=473 
RewriteRule ^produit.php /product.php?id_product=210 [R=301] 

Ce qui signifie que « si la chaîne de requête correspond au modèle « PDT_ID = 473 », et motif correspond à l'uri, puis réécrire ". Notez que vous pourriez vouloir rendre la regex de rewriteCond plus infaillible pour s'assurer qu'elle ne correspondra pas à des choses comme APDT_ID = 4735, mais cela devrait vous aider à démarrer.

+0

Merci beaucoup: D – JojoLapin45

+0

Je viens de changer votre code d'ajouter un $ RewriteCond% {QUERY_STRING} PDT_ID = 473 $ RewriteRule^produit.php /product.php?id_product=210 [R = 301] parce que si je remplace 473 par 47333 ou 473987 ou 473000 ... il redirige la page toujours à /product.php?id_product=210 – JojoLapin45

+2

@ JojoLapin45, une meilleure façon est d'utiliser le délimiteur '\ b'' \ bPDT_ID = 473 \ b' - de cette façon, si un autre paramètre est présent, le cond correspondra toujours. – TerryE