Respostas:
server_name suporta correspondências de sufixos usando a sintaxe .mydomain.com:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
ou em qualquer versão 0.9.1 ou superior:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listen
diretiva padrão é a porta 80 quando não especificada. Na verdade, é um pouco mais complicado do que isso em geral; consulte os documentos de configuração do nginx para obter mais detalhes.
?
conquista alcança no final?
rewrite
e return 301 $scheme://www.adifferentdomain.com$request_uri;
?
$request_uri
já possui a string de consulta, não há necessidade de anexá-la novamente. A return 301
sintaxe é mais recente e não deve haver diferença de comportamento entre os dois métodos, mas quando eu originalmente respondi a essa pergunta, muitas distribuições não tinham a versão necessária, por isso fui com a sintaxe mais segura.
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
e
Por que usar o módulo de reescrita, se você pode fazer return
? Tecnicamente falando, return
faz parte do módulo de reescrita, como você pode ler aqui, mas esse trecho é mais fácil de ler na imho.
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
Você também pode redirecioná-lo 301.
return 302 $scheme://forwarded-domain.com$request_uri;
Isso deve funcionar via HTTPRewriteModule .
Exemplo de reescrita de www.example.com para example.com:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server_name example.com www.example.com;
.
Se você deseja redirecionar solicitações de "domain1.com" para "domain2.com", crie um bloco de servidor parecido com este:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
Redirecionamento temporário
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
Redirecionamento permanente
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
No arquivo de configuração nginx para site específico:
server {
server_name www.example.com;
rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;
}
Você pode simplesmente escrever uma condição if dentro do bloco do servidor {}:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}