Come faccio a reindirizzare mydomain.com
e qualsiasi sottodominio *.mydomain.com
di www.adifferentdomain.com
utilizzare Nginx?
Come faccio a reindirizzare mydomain.com
e qualsiasi sottodominio *.mydomain.com
di www.adifferentdomain.com
utilizzare Nginx?
Risposte:
nome_server supporta le corrispondenze dei suffissi utilizzando la sintassi .mydomain.com:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
o su qualsiasi versione 0.9.1 o successiva:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listen
direttiva passa automaticamente alla porta 80 quando non viene specificata. In realtà è un po 'più complicato di quello in generale; vedere i documenti di configurazione di nginx per maggiori dettagli.
?
ottiene alla fine?
rewrite
e return 301 $scheme://www.adifferentdomain.com$request_uri;
?
$request_uri
ha già la stringa di query, non è necessario aggiungerla di nuovo. La return 301
sintassi è più recente e non dovrebbe esserci alcuna differenza nel comportamento tra i due metodi, ma quando inizialmente ho risposto a questa domanda, molte distribuzioni non avevano la versione richiesta, quindi sono andato con la sintassi più sicura.
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
e
Perché usare il modulo di riscrittura se puoi farlo return
? Tecnicamente parlando, return
fa parte del modulo di riscrittura come puoi leggere qui, ma questo frammento è più facile da leggere imho.
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
Puoi anche dargli un reindirizzamento 301.
return 302 $scheme://forwarded-domain.com$request_uri;
Dovrebbe funzionare tramite HTTPRewriteModule .
Esempio di riscrittura da www.esempio.com a esempio.com:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server_name example.com www.example.com;
.
Se desideri reindirizzare le richieste di "domain1.com" a "domain2.com", puoi creare un blocco server simile al seguente:
server {
listen 80;
server_name domain1.com;
return 301 $scheme://domain2.com$request_uri;
}
listen 443;
Reindirizzamento temporaneo
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? redirect;
Reindirizzamento permanente
rewrite ^ http://www.RedirectToThisDomain.com$request_uri? permanent;
Nel file di configurazione nginx per sito specifico:
server {
server_name www.example.com;
rewrite ^ http://www.RedictToThisDomain.com$request_uri? redirect;
}
Puoi semplicemente scrivere una condizione if all'interno del blocco server {}:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}