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 de sites-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

HostingFunciona en discos NVMe ultrarrápidos. Apto para sitios web de cualquier complejidad.
Pedir
VPSParámetros ajustables y configuración flexible del SO. Administración gratuita incluida.
Pedir
Servidores dedicadosDisponibles diversas configuraciones Supermicro con procesadores Intel y AMD.
Pedir

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!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos