htaccess 301 redirect-Eliminar cadena de consulta (QSA)


He estado luchando con algunas redirecciones de htaccess. Acabo de pasar algún tiempo leyendo y buscando en stack y no pude conseguir un anwser que funcione con mi escenario.

Estoy en el proceso de hacer el redireccionamiento 301 para un sitio web de cliente antiguo a uno nuevo. Las páginas antiguas tienen una consulta de parámetros que quiero eliminar de la url.

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

A

/new-website-page/

Tengo varias consultas que hacer, aquí hay un par de ejemplos:

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

Que todos enlazan a diferentes páginas nuevas.

Esto es lo que intenté:

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

Me redirige correctamente, pero la URL mantiene la cadena de consulta:

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

También intenté esto:

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

Y esto:

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

Y no funcionó (Todavía tiene la cadena de consulta al final)

Gracias!

Author: anubhava, 2014-01-14

2 answers

Puedes usar esta regla:

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

Tome nota del final ?que se usa para eliminar cualquier cadena de consulta existente en el URI original.

 82
Author: anubhava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 16:25:39

Además de la respuesta de anubhava, puede usar alternativamente la bandera QSD de 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
Author: RafaSashi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-19 14:26:29