2010-05-07 24 views
6

Sin embargo, otra cuestión nginx regla de reescritura:nginx reescribir

¿Cómo puedo hacer una reescritura http://www.*.domain.com-http://*.domain.com?

+0

Pregunta similar: http://stackoverflow.com/questions/2498712/nginx-subdomain-rewrite –

Respuesta

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

Respuesta de fallo del servidor: https://serverfault.com/questions/139579/nginx-subdomain-rewrite

+5

Este enfoque no se recomienda en la actualidad. Ver [esta sección sobre trampas comunes] (http://wiki.nginx.org/Pitfalls#Using_If). –

+0

¿cuál es el enfoque recomendado? – Tony

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

Tenga en cuenta que esto produce una cadena de doble consulta, una solicitud para '/? Foo = bar' se redirigirá a' /? Foo = bar? Foo = bar'. El uso de '$ uri' parece funcionar según lo previsto, aunque puede haber mejores opciones. – sapht

+1

¿Agregar? después de $ request_uri evitará el problema de cadena de consulta repetida. – tarkeshwar

+0

Falta un punto y coma después de server_name – alvin