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!
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.
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