redirection 301 - Supprimer la chaîne de requête (QSA)

J'ai eu du mal avec des redirections htaccess. Je viens de passer du temps à lire et à chercher sur stack et je ne pouvais pas obtenir un anwser qui fonctionne avec mon scénario.

Je suis en train de faire la redirection 301 pour un ancien site client vers un nouveau. Les anciennes pages ont une requête de paramètres que je veux supprimer de l'url.

/menu.php?idCategorie=29&idDetail=172

À

/new-website-page/

J'ai plusieurs requêtes à faire, voici quelques exemple:

/menu.php?idCategorie=29&idDetail=172
/menu.php?idCategorie=29&idDetail=182
/menu.php?idCategorie=29&idDetail=184
/menu.php?idCategorie=29&idDetail=256

Qui sont tous liés à différentes nouvelles pages.

Voici ce que j'ai essayé:

RewriteCond %{QUERY_STRING} idDetail=172
RewriteRule ^menu.php(.*) /new-page/? [R=301,L]

Je suis redirigé correctement, mais l'URL conserve la chaîne de requête:

http://website.com/new-page/?idCategorie=29&idDetail=172

J'ai aussi essayé ceci:

RewriteRule ^menu.php?idCategorie=29&idDetail=172$ http://website.com/new-page/? [L,R=301]

Et ceci:

RewriteCond %{QUERY_STRING} idDetail=172(.*)$
RewriteRule ^menu.php /new-page-name?$1 [L,R=301]

Et cela n'a pas fonctionné (il y a toujours la chaîne de requête à la fin)

Merci!

36
demandé sur anubhava 2014-01-14 20:22:43

2 réponses

Vous pouvez utiliser cette règle:

RewriteRule ^menu\.php$ /new-page-name? [L,R=301]

Prenez note de la fin ? à la fin qui est utilisé pour supprimer toute chaîne de requête existante dans l'URI d'origine.

82
répondu anubhava 2014-01-14 16:25:39

En plus de la réponse d'anubhava, vous pouvez également utiliser L'indicateur QSD d'Apache 2.4.0

RewriteRule ^menu\.php$ /new-page-name [L,R=301,QSD]

Http://httpd.apache.org/docs/current/en/rewrite/flags.html#flag_qsd

27
répondu RafaSashi 2014-06-19 14:26:29