Reescreva o host para outro host com algumas complicações

1

Eu tinha um site em domiy.com e agora estou mudando o nome para namedar.com. Gostaria de redirecionar 301 todas as solicitações de domiy.com (ou nametyper.com) para que elas retornem namedar.com com o URI de solicitação intacto.

Eu tentei simplesmente redirecionar tudo para namedar.com, mas isso leva a um loop de redirecionamento quando uma solicitação chega para namedar.com.

rewrite ^ $scheme://nametyper.com$request_uri permanent; # Doesn't work

Eu também gostaria de manter a configuração configurada de tal forma que todas as solicitações "www" sejam redirecionadas para a versão não www.

Meu nginx.conf se parece com isso no momento:

server {
  server_name namedar.com www.namedar.com domiy.com www.domiy.com nametyper.com www.nametyper.com;

  # Remove all 'www.' prefixes.
  if ($host ~* www\.(.*)) {
    set $host_without_www $1;
    rewrite ^(.*)$ $scheme://$host_without_www$1 permanent;
  }
}

Como escrevo uma diretiva rewrite para realizar isso?

    
por duckyfuzz 25.06.2012 / 16:04

1 resposta

1

Por favor, deixe-me dividir suas preocupações em duas etapas ...

Passo 1: www para não-www

server {
  server_name www.domainname.com;
  return 301 $scheme://domainname.com$request_uri;
}

server {
  server_name domainname.com;
  # [...] regular blocks and directives
}

Etapa 2: first_domain.com para second_domain.com

server {
  server_name first_domain.com www.first_domain.com;
  return 301 $scheme://second_domain.com$request_uri;
}

Você pode modificar as etapas acima para que funcione para qualquer número de domínios. Além disso, você pode combinar ambos para acontecer em uma única etapa.

BTW, em Nginx, se for considerado um mal .

    
por 25.06.2012 / 17:31