Regra de reescrita do Apache para nginx

Regra de reescrita do Apache para nginx

Eu tenho que criar uma regra de reescrita para o Apache, assim como para o nginx.

Alteração necessária:

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

Para Apache, o código abaixo funciona bem, mas não consigo convertê-lo para nginx.

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

Eu tentei algo assim:

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

Mas termina com algo assim:

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

O que estou fazendo de errado?

Responder1

Documentação Nginx sobre reescrita de módulotem alguns exemplos. Essencialmente, você está usando o caractere errado para identificar os resultados da expressão regular. Deveria ser $em vez de %.

Você também pode ter que repetir sua expressão regular para a regra de reescrita correspondente.

informação relacionada