redirecionamento nginx com base em $ request_uri

3

No meu arquivo de configuração do site padrão, tenho o seguinte redirecionamento para impor https:

 server {
    listen       80;
    server_name  www.example.com example.com;
    return       301 https://example.com$request_uri;
 }

Eu quero adicionar um subdomínio, mas redirecioná-lo para o site com um parâmetro. por exemplo. fr.example.com - > link

Se eu fizer:

return       301 https://example.com$request_uri&lang=fr;

Ele adicionará "& lang = fr" se houver outros parâmetros em $ request_uri ou não.

Como eu defino condicionalmente '?' ou '&', com base no conteúdo de $ request_uri?

Eu tentei o seguinte:

server {
    listen       80;
    server_name  fr.example.com;
       if ($request_uri ~ ""){
           return       301 https://example.com?tlang=fr;
       }
        return       301 https://example.com$request_uri&tlang=fr;
}

mas assim o site falhou em conjunto.

Obrigado

    
por Avi Kehat 17.03.2017 / 10:12

1 resposta

0

Primeiro, $request_uri não contém argumentos de consulta para a solicitação.

Existem duas opções:

  1. Use um retorno no qual você adiciona $args após o argumento lang :

return 301 https://example.com?lang=fr&$args:

  1. Use um mapa:

Em http level, você define o mapa:

map $args $redirargs {
    "~.+" $args&lang=fr;
    default lang=fr;
}

E, em seguida, use

return 301 http://example.com$request_uri?$redirargs;
    
por 17.03.2017 / 11:45

Tags