apache - instalar - ¿Cómo puedo modificar mod_rewrite y mantener las cadenas de consulta?
linux mod_rewrite (1)
Quiero mod_rewrite una URL a otra página, pero también quiero que se conserven las cadenas de consulta añadidas.
RewriteEngine On
#enforce trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301]
RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1
Entonces, si un usuario visita apps/app1/
, se muestra index.php?app=app1
. Sin embargo, deseo poder preservar cadenas de consulta opcionales, de modo que visitar apps/app1/?variable=x
devuelva index.php?app=app1&variable=x
.
¿Qué regla / condición mod_rewrite haría que esto suceda?
[QSA]
agregar el indicador [QSA]
("apéndice de cadena de consulta")
RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1 [L,QSA]
Para la página 301 redirige con el indicador [R]
en lugar de las reescrituras internas como esta, la cadena de consulta se agrega automáticamente. Sin embargo, debe forzarlo con [QSA]
para la reescritura interna.