nginx reescribe para una URL con parámetros

Pregunta:

Tengo una URL de este tipo:

http://www.example.com/?param1=val1&param2=&param3=val3&param4=val4&param5=val5

Y quiero redirigirlo a este:

http://www.example.com/newparam/val3/val4

Así que probé esta regla de reescritura sin éxito:

rewrite "/?param1=val1&param2=&param3=(.+)&param4=(.+)&param5=(.+)" http://www.example.com/newparam/$1/$2 redirect;

¿Nginx no puede manejar los parámetros de consulta?

EDITAR: No quiero reescribir todas las peticiones. Solo necesito reescribir esa URL, sin afectar a las demás.

Respuesta:

Ok, gracias a la ayuda inicial de rzab, he redefinido su regla a esta solución de trabajo:

location / {
    if ($args ~* "/?param1=val1&param2=&param3=[0-9]+&param4=.+&param5=[0-9]+") {
        rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4? last;
    }
}

Acabo de agregar una condición para evitar la recursividad infinita y un? al final de la regla para deshacerse de los parámetros iniciales . Funciona perfectamente 🙂

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım