Redirecionamento de subdomínio do curinga Nginx enquanto mantém a sequência de consulta

1

Estou tentando redirecionar um subdomínio curinga para um novo URL, acrescentando o subdomínio no final do URL. por exemplo, sub1.example.com redirecionaria para www.newdomain.example/categories/sub1 :

server {
server_name ~^(.*)\.example\.com$ ;
return 301 $scheme://newdomain.example/categories/;
}

Achei que o Nginx, por padrão, adicionaria isso, pois não há ? no final para interrompê-lo.

    
por JCats 27.08.2015 / 03:47

3 respostas

3

Ou sem usar o mal se:

server {
  server_name ~^(.*)\.example\.com$;
  return 301 $scheme://www.newdomain.example/categories/$1$request_uri;
}

como $ request_uri já contém a string de consulta / os argumentos, consulte o link

e eu também quero mencionar o par $ is_args $ args, quando você não quer usar $ request_uri

  location = /from {
    return 301 /to$is_args$args;
  }
    
por 21.07.2016 / 10:52
1

Veja os exemplos de server_name nos documentos oficiais :

server {
  server_name ~^(.*)\.example\.com$;
  if ($query_string) {
    return 301 $scheme://newdomain.example/categories/$1?$query_string;
  }
  return 301 $scheme://newdomain.example/categories/$1;
}

sub1.example.com would redirect to www.newdomain.example/categories/sub1

www.newdomain.example ou example.com que está correto?

    
por 27.08.2015 / 12:25
0

Para redirecionar http://cat.example.com/post/1?comments=true para http://example.com/categories/cat/post/1?comments=true , você pode usar esta configuração:

server {
    server_name ~^(.*)\.(example\.com)$;
    return 301 $scheme://$2/categories/$1$request_uri;
}

Ele usa regexes com grupos de captura de server_name para evitar duplicação. A string de consulta não é mantida por padrão no seu exemplo e, na configuração proposta, ela é mantida usando $request_uri :

$request_uri
    full original request URI (with arguments) 
    
por 27.08.2015 / 13:23

Tags