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
.