Regla de reescritura de Apache para nginx

Regla de reescritura de Apache para nginx

Tengo que crear una regla de reescritura para Apache, así como para nginx.

Cambio requerido:

/search?q=test&**p**=1 to /search?q=test&**page**=1

Para Apache, el siguiente código funciona bien pero no puedo convertirlo para nginx.

RewriteCond %{QUERY_STRING} ^q=(.*)&p=([0-9]+)(.*)$
RewriteRule ^(search/?)$ /search?q=%1&page=%2 [NC,L,R]

He probado algo como esto:

  if ($query_string ~ "^q=(.*)&p=([0-9]+)(.*)$"){
    rewrite ^/(search/?)$ /search?q=%1&page=%2 redirect;
  }

Pero termina con algo así:

/search?q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q

¿Qué estoy haciendo mal?

Respuesta1

Documentación de Nginx sobre la reescritura del módulotiene algunos ejemplos. Básicamente, estás utilizando el carácter incorrecto para identificar los resultados de la expresión regular. Debería ser $más que %.

Es posible que también tengas que repetir tu expresión regular para la regla de reescritura de coincidencia.

información relacionada