2010-05-07 17 views
6

Ancora un altro nginx regola di riscrittura domanda:nginx sottodominio riscrivere

Come posso fare una riscrittura http://www.*.domain.com-http://*.domain.com?

+0

domanda simile: http://stackoverflow.com/questions/2498712/nginx-subdomain-rewrite –

risposta

7
if ($host ~* www\.(.*)) { 
    set $host_without_www $1; 
    rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo' 
} 

risposta da guasti del server: https://serverfault.com/questions/139579/nginx-subdomain-rewrite

+5

Questo approccio non è raccomandato al giorno d'oggi. Vedi [questa sezione sugli errori comuni] (http://wiki.nginx.org/Pitfalls#Using_If). –

+0

Qual è l'approccio consigliato? – Tony

2
server { 
    listen 80; 
    listen 443; 
    server_name ~^www\.(\w+)\.domain\.com$; 
    location/{ 
    rewrite^$scheme://$1.domain.com$request_uri? permanent; 
    } 
} 
+0

Nota che questo produce una doppia stringa di query, una richiesta per '/? Foo = bar' reindirizza a' /? Foo = bar? Foo = bar'. Usare '$ uri' sembra funzionare come previsto, sebbene ci possano essere opzioni migliori. – sapht

+1

Aggiunta? dopo $ request_uri si eviterà il problema della stringa di query ripetuta. – tarkeshwar

+0

C'è un punto e virgola mancante dopo server_name – alvin

Problemi correlati