Redirecciones HTTP en Nginx
Una guía completa para configurar redirecciones en Nginx.
Los redireccionamientos HTTP indican a los navegadores y a los rastreadores de los motores de búsqueda que pasen de una URL a otra. Se utilizan en todo tipo de situaciones: migración a un nuevo dominio, forzar HTTPS, reorganizar la estructura de URL, consolidar contenido duplicado y mucho más. Bien configurados, los redireccionamientos preservan tu posicionamiento en buscadores y evitan que los usuarios lleguen a páginas sin salida.
Nginx gestiona los redireccionamientos a través del módulo integrado ngx_http_rewrite_module, que se instala por defecto.
¿Cómo utilizarlo?
Un VPS o un servidor dedicado te da control total sobre tu configuración de Nginx — puedes definir cualquier lógica de redireccionamiento, probarla e iterar rápidamente.
Dónde configurar los redireccionamientos
Los redireccionamientos de Nginx se definen en los archivos de configuración del servidor:
/etc/nginx/nginx.conf— el archivo de configuración principal/etc/nginx/sites-available/site_name— configuración por sitio/etc/nginx/sites-enabled/— enlaces simbólicos a las configuraciones activas desites-available
Realiza los cambios en sites-available y valida siempre la sintaxis antes de recargar:
nginx -t
Redirección 301 de www a non-www
server {
listen 80;
server_name www.domain.com;
rewrite ^ http://domain.com$request_uri? permanent;
}
server {
listen 80;
server_name domain.com;
...
}
Redirección 301 de non-www a www
server {
listen 80;
server_name domain.com;
rewrite ^ http://www.domain.com$request_uri? permanent;
}
server {
listen 80;
server_name www.domain.com;
...
}
Redirección 301 de HTTPS a HTTP
server {
listen 443;
server_name www.domain.com;
rewrite ^ http://www.domain.com$request_uri? permanent;
}
server {
listen 80;
server_name www.domain.com;
...
}
Redirección 301 de HTTP a HTTPS
Para un dominio nuevo:
server {
listen SERVER_IP:80;
server_name www.domain.com;
rewrite ^ https://www.domain.com$request_uri? permanent;
}
server {
listen SERVER_IP:443 ssl;
server_name www.domain.com;
...
}
Para un dominio existente:
server {
listen SERVER_IP:80;
server_name www.domain.com;
rewrite ^ https://www.domain.com$request_uri? permanent;
}
Redirigir una página específica a una nueva URL
server {
...
if ($request_filename ~ oldpage/) {
rewrite ^ http://www.domain.com/newpage/? permanent;
}
...
}
Redirección 301 para un directorio completo
server {
...
if ($request_filename ~ oldfolder/.+) {
rewrite ^(.*) http://www.domain.com/newfolder/$1 permanent;
}
...
}
Nuestros servicios y productos
Redirección 301 de un dominio a otro
server {
server_name domain.com www.old-domain.com;
rewrite ^ $scheme://www.new-domain.com;
}
Eliminar las barras finales de las URL
server {
...
rewrite ^/(.*)/$ /$1 permanent;
...
}
location ~ .+/$ {
rewrite (.+)/$ $1 permanent;
}
Redireccionamiento desde index.php
if ($request_uri ~* "^(.*/)index\.phpquot;) {
return 301 $1;
}
Corregir barras dobles (//) en las URL
merge_slashes off;
location ~* "//" {
rewrite ^(.*)//(.*)$ $1/$2;
rewrite ^ $uri permanent;
}
Tras cualquier cambio, reinicia Nginx para que surtan efecto:
service nginx restart
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!