J'ai eu du mal avec certaines redirections htaccess. Je viens de passer du temps à lire et à chercher sur la pile et je n'ai pas pu obtenir de réponse qui fonctionne avec mon scénario.
Je suis en train de faire la redirection 301 d'un ancien site Web 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 un 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 également essayé ceci:
RewriteRule ^menu.php?idCategorie=29&idDetail=172$ http://website.com/new-page/? [L,R=301]
Et ça:
RewriteCond %{QUERY_STRING} idDetail=172(.*)$
RewriteRule ^menu.php /new-page-name?$1 [L,R=301]
Et cela n'a pas fonctionné (il reste la chaîne de requête à la fin)
Merci!
Vous pouvez utiliser cette règle:
RewriteRule ^menu\.php$ /new-page-name? [L,R=301]
Prenez note de la fin ?
à la fin qui est tilisé pour supprimer toute chaîne de requête existante dans l'URI d'origine.
En plus de la réponse de 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