¿Cómo redirigir la URL con una consulta de cadena a la misma URL sin una consulta de cadena?
La (s) URL (es) como a continuación (hay 2 sitios web, uno con www y otro sin él)
https://example1.com/any-path-here/?_gl=1*um0ntk*_ga*YW1wLUVyYS1QbHgwcFp1SEJBYVlGSlNYdWNQUWIxNGVxY2VhakRDNDUtYmJUZWZPV1M2WEdWN2s2dXVRNzNZWGNTdkk
https://www.example2.com/hello-how-are-you-today/?_gl=1*1lcwex2*_ga*YW1wLXBtWXdrdWNEcTRjTVcwWjMzTzJwNEdJeU5vTmo5UVF0RmFhTEdpbkdMdjgyLXRNQXJaM21oRGpUX2ppSnB3dGs
debería redirigir a
https://example1.com/any-path-here/
https://www.example2.com/hello-how-are-you-today/
Solo el _gl = parece ser constante.
Yo he tratado:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} _gl=
RewriteRule ^ %{REQUEST_URI}? [L,R]
</IfModule>
Y
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^_gl=*
RewriteRule ^ %{REQUEST_URI}? [L,R]
</IfModule>
Y otras reglas. Pero nada parece funcionar.
Espero que la solución no estropee la redirección de dominio simple y la redirección https.
Respuestas
Si bien ninguna de las reglas que ha publicado es estrictamente correcta, ambas deben realizar el redireccionamiento requerido. Si tiene otras directivas en su .htaccess
archivo, la causa más probable es que estén en el orden incorrecto y tenga un conflicto.
Estos redireccionamientos deberán ir cerca de la parte superior del .htaccess
archivo, antes que cualquier directiva mod_rewrite existente . (¿Aunque es posible que desee combinarlo con sus redireccionamientos HTTPS / dominio simple?)
No necesita el <IfModule>
contenedor y no necesita la RewriteEngine On
directiva, si esto ya existe en su .htaccess
archivo.
Para eliminar la cadena de consulta cuando una solicitud contiene una cadena de consulta que comienza _gl=
, CondPattern debería leer ^_gl=
. Un final *
repite lo anterior =
y hace _gl=
coincidir esa cadena en cualquier lugar de la cadena de consulta, no solo al principio.
Por ejemplo:
RewriteCond %{QUERY_STRING} ^_gl=
RewriteRule ^ %{REQUEST_URI}? [R,L]
Si está en Apache 2.4, puede usar la QSD
bandera (Descartar cadena de consulta) en lugar de agregar una ?
a la cadena de sustitución . es decir.RewriteRule ^ %{REQUEST_URI} [QSD,R,L]