Limpar url com vários params em nginx

1

Eu sou um novato no nginx. A questão é como reescrever url com string de consulta para o URL 'clean':

para um parâmetro:

host.com?page.html/param1=value1  <- host.com/page/value1
www.host.com?param1=value1        <- www.host.com/page/value1

para dois parâmetros:

host.com?page.html/param1=value1&param2=value2 <- host.com/page/value1/value2
www.host.com?param1=value1&param2=value2       <- www.host.com/page/value1/value2

para n parâmetros:

host.com?page.html/param1=value1&param2=value2..&paramN=valueN <- host.com/page/value1/value2/../valueN
www.host.com?param1=value1&param2=value2..&paramN=valueN       <- www.host.com/page/value1/value2/../valueN
    
por Roman 17.12.2014 / 13:45

1 resposta

1

Os parâmetros, (também conhecidos como argumentos ou cadeias de caracteres de consulta), não são vistos diretamente como parte da URL para reescritas do nginx. Em vez disso, eles são salvos como variáveis que podem ser acessadas, testadas e inseridas no URL resultante.

O nome que eles salvam é $ arg_. Então, no seu primeiro exemplo, você gostaria de redirecioná-los assim:

rewrite ^/page.html$ /page/$arg_param1? permanent;

Eu não sugeriria a realização de reescritas em argumentos diretamente do seu nome de host (www.host.com?param1=value1) sem alguma validação de entrada, caso contrário, você acabará redirecionando TUDO da sua página inicial.

    
por 17.12.2014 / 14:00

Tags