2011-05-18 21 views

Respuesta

179

server_name apoya sufijo coincide usando .midominio.es sintaxis:

server { 
    server_name .mydomain.com; 
    rewrite^http://www.adifferentdomain.com$request_uri? permanent; 
} 

o en cualquier versión 0.9.1 o superior:

server { 
    server_name .mydomain.com; 
    return 301 http://www.adifferentdomain.com$request_uri; 
} 
+0

¿No necesito poner un puerto para escuchar? p.ej. listen 80. Tengo varios dominios que necesito redirigir a un dominio principal, pero mi servidor también tiene varios servidores virtuales para varios otros dominios. – Ryan

+1

@Ryan La directiva 'listen' se establece de manera predeterminada en el puerto 80 cuando no se especifica. En realidad es un poco más complicado que eso en general; ver los [documentos de configuración de nginx] (http://wiki.nginx.org/HttpCoreModule#Directives) para más detalles. – Yitz

+2

¿Qué logra el '?' Al final? –

10

Eso debería funcionar a través de HTTPRewriteModule.

Ejemplo reescribir de www.example.com a example.com:

server {  
    server_name www.example.com;  
    rewrite^http://example.com$request_uri? permanent; 
} 
+0

que está redireccionando www.example.com t o ejemplo.com. Quiero redirigir ambos a un dominio diferente. ¿Puedo hacer eso en una regla? – deb

+0

No estoy seguro, pero creo que server_name midominio.com; reescriba www.adifferentdomain.com permanente; } debería hacerlo? Eso debería tomar todo * .midominio.com? – udo

+0

@deb solo tendrías 'server_name example.com www.example.com;'. – citruspi

8

Por qué utilizar el módulo de reescritura si se puede hacer return? Técnicamente hablando, return es parte del módulo de reescritura como you can read here pero este fragmento es más fácil de leer.

server { 
    server_name .domain.com; 

    return 302 $scheme://forwarded-domain.com; 
} 

También puede darle una redirección 301.

+1

¿Esto mantendrá los parámetros ruta y consulta también? – mpen

+2

No, este ejemplo no hace eso @Mark. Pero supongo que puedes mezclar las respuestas anteriores para llegar a algo como esto: 'return 302 $ scheme: //forwarded-domain.com$request_uri;' –

+0

En una nota lateral, en muchos casos, probablemente solo deberías redirigir a https en lugar de preservar el esquema (es decir, use https en lugar de $ scheme). Esto se debe a los mismos motivos por los que los enlaces relativos al protocolo ahora se consideran obsoletos: http://www.paulirish.com/2010/the-protocol-relative-url/ – mahemoff

2

Si desea redirigir las peticiones de "domain1.com" a "domain2.com", se podría crear un bloque de servidor que se ve de esta manera:

server { 
    listen 80; 
    server_name domain1.com; 
    return 301 $scheme://domain2.com$request_uri; 
} 
Cuestiones relacionadas