Nginx: redireciona da url antiga para a nova e mantém a string de consulta

1

Eu preciso reescrever antigos URLs para novos usando nginx reescrever. Eu tenho um problema com a string de consulta. O redirecionamento não funciona se o URL antigo tiver um parâmetro de string de consulta. Minha configuração atual:

map $request_uri $newuri {
    /old-url/path /new-url/path;
}

server {
    location / {
        if ($newuri) {
            return 301 $newuri;
        }
    }
}
    
por Bald 22.12.2016 / 10:39

1 resposta

2

Sua instrução map está realizando uma correspondência de sequência em $request_uri . A variável $request_uri também inclui a string de consulta. Se você deseja corresponder com e sem a string de consulta, você deve corresponder apenas à frente de $request_uri , o que pode ser feito usando a sintaxe expressão regular :

map $request_uri $newuri {
    ~*^/old-url/path /new-url/path;
}

Veja este documento para detalhes.

    
por 22.12.2016 / 12:50

Tags