Como modificar $ uri para parte de uri de request_uri em nginx?

2

Suponha que o valor de $ request_uri seja / a / b / c. O valor atual de $ uri é /index.php. É possível alterar meu $ uri para / b / c.

Eu tentei isso, o que não parece estar funcionando,

if ($request_uri ~* /a/(.*)/(.*)){
  set $uri /$1/$2;
}

Mas isso dá erro de variável "uri" duplicada. Eu também tentei,

if ($request_uri ~* /a/(.*)/(.*)){
  rewrite ^ /$1/$2 break;
}

Mas as variáveis $ não parecem armazenar valores.

Existe uma saída? Obrigado.

    
por Satys 02.09.2015 / 18:56

2 respostas

3

Você pode usar apenas uma variável temporária? Por exemplo (não tentei):

if ($request_uri ~* /a/(.*)/(.*)){
  set $tmp /$1/$2;
  rewrite ^ $tmp break;
}

ou sobre:

if ($request_uri ~* /a/(.*)/(.*)){
  rewrite ^ $request_uri;
  rewrite ^/[^/]*/(.*)/(.*) /$1/$2 break;
}
    
por 02.09.2015 / 19:59
0

Como foi respondido por @MTeck em link

Se você realmente quer exatamente $ request_uri com o args despojado, você pode fazer isso.

local uri = string.gsub(ngx.var.request_uri, "?.*", "")

Você precisará ter lua disponível, mas isso fará exatamente o que você está pedindo.

    
por 27.09.2016 / 10:39

Tags