Redirect baseado no parâmetro

1

Estou tentando redirecionar uma página com base nos parâmetros transmitidos.

Gostaria de redirecionar

reescreva ^ / join_trial para / test? permanente;

e

reescreva ^ / join_trial? discount = grátis (. *) / test2? permanente;

O primeiro funciona, mas o segundo não funciona. Parece que o nginx não pega (. *) Regex.

Para o primeiro, os seguintes casos funcionam.

/ join_trial? test = aaaaa

/ join_trial? 923849 = aaa

Basicamente, você pode colocar qualquer coisa depois de / join_trial .

Eu quero ter um redirecionamento quando um usuário anexa ? discount = free (vale tudo aqui).

Isso é possível com o nginx?

    
por Moon 20.02.2014 / 03:56

1 resposta

3

Você não pode corresponder em uma string de consulta em um rewrite . Então você precisa verificar o argumento diretamente.

Por exemplo:

if ($arg_discount ~ ^free) {
    rewrite ^/join_trial /test2? permanent;
}
rewrite ^/join_trial /test? permanent;

E suspeito que você realmente não deseja enviar redirecionamentos 301, pois o usuário verá /test ou /test2 em sua barra de endereço. Talvez você realmente queira processar essas URLs apenas internamente? Nesse caso, altere permanent para last .

    
por 20.02.2014 / 04:20

Tags