Existem vários problemas com sua implementação atual: você tem dois location /
blocks e rewrite $new_request_uri last;
é semanticamente incorreto.
A solução fácil é modificar o $request_uri
executando um redirecionamento externo . Isso é confuso porque você precisa identificar apenas os URIs que não possuem um argumento mobileaction
. Por exemplo:
if ($args !~* mobileaction) {
rewrite ^ $uri?mobileaction=toggle_view_mobile permanent;
}
A diretiva rewrite
cuida de ?
vs &
e anexa automaticamente a lista de argumentos existente.
O bloco if
pode ser colocado dentro do bloco location /
ou acima dele.