Los redireccionamientos (o redireccionamientos) se utilizan en los casos en que es necesario transferir usuarios del sitio o motores de búsqueda de una página a otra, en otras palabras, redirigir de una URL a otra.

Apache

Conectando el módulo mod_rewrite

Para habilitar la redirección utilizando las herramientas de Apache, basta con que el módulo mod_rewrite.so fue subido a Apache.

Para Ubuntu, Sistema operativo Debian:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Para CentOS, RedHat, AlmaLinux OS, debe verificar que el /etc/httpd/conf.módulos.d/00-base.conf archivo contiene la línea:

LoadModule rewrite_module modules/mod_rewrite.so

Si no está presente, debe agregarlo al final del archivo. Si está comentado (hay un # al principio de la línea), debe descomentar la línea.

Para que las directivas mod_rewrite se utilicen en .htaccess, es necesario escribir en el archivo de configuración de Apache en la sección correspondiente < Directorio/ruta/a/directorio>:

AllowOverride all

Después de realizar cambios en el archivo de configuración de Apache, debe reiniciar el servidor web para que estos cambios surtan efecto.

Para Ubuntu, Sistema operativo Debian:

systemctl restart apache2

Para CentOS, RedHat, AlmaLinux OS:

systemctl restart httpd

Adentro .htaccess, para que funcione la redirección, debe especificar la siguiente directiva:

RewriteEngine On

Reglas de Redirección

Puede especificar estas directivas en la configuración de Apache para el host virtual deseado o en un archivo .htaccess.

Redirigir o Redireccionar permanentemente

La principal desventaja de estas reglas es que se debe escribir una nueva regla para cada dirección. Si necesita realizar múltiples redirecciones, cada nueva redirección se escribe desde una nueva línea.

Redirect 301 /old-page.html http://new-domain.ru/new-page.html

o

Redirect permanent /old-page.html http://new-domain.ru/new-page.html

Para redirigir todas las solicitudes a otro sitio, puede utilizar la siguiente construcción:

Redirect 301 / http://new-domain.ru/

o

Redirect permanent / http://new-domain.ru/

RedirectMatch

Esta redirección difiere en que puede usar una expresión regular. Por ejemplo, al migrar un sitio web de Windows a Linux, debe cambiar todos los enlaces de *.php a *.aspx.:

RedirectMatch /(.*)\.aspx$ /$1.php

RewriteRule

Para que este módulo funcione, asegúrese de que la opción FollowSymLinks esté habilitada. Esta función debe registrarse en el archivo de configuración de Apache o en el archivo.htaccess como se especifica a continuación.

Veamos las formas más comunes de usarlo

Redirigir de un sitio a otro

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.oldsite\.ru [OR]
RewriteCond %{HTTP_HOST} ^oldsite\.ru
RewriteRule (.*) https://newsite.ru [R=301,L]

Redirigir de www a sin www

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

O una sintaxis más comprensible:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

Puedes usar cualquiera.

Redirigir de sin www a www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] 

La alternativa:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Redirigir un dominio de https a http

Para que esta redirección funcione, solo se debe utilizar el servidor web Apache. Al usar el paquete Nginx+Apache, se producirá un error de ida y vuelta. Por lo tanto, la redirección deberá configurarse específicamente en Nginx.

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Redirigir un dominio de http a https

Para que esta redirección funcione, solo se debe utilizar el servidor web Apache. Al usar el paquete Nginx+Apache, se producirá un error de ida y vuelta. Por lo tanto, la redirección deberá configurarse específicamente en Nginx.

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

Nginx

El módulo ngx_http_rewrite_module, necesario para configurar redireccionamientos, se instala automáticamente junto con Nginx.

Se recomienda agregar reglas de redireccionamiento de una en una, ya que puede obtener un error o una redirección cíclica. Por lo tanto, después de cada cambio en el archivo de configuración, debe verificar su corrección con el comando:

nginx -t

Redirigir 301 s www.domain.com en domain.com

Para Nginx, debe crear dos secciones de servidor en el archivo de configuración, una para el dominio con www y la segunda para el dominio sin www:

La sección del servidor para redirecciones:

server {
     listen  80;
     server_name www.domain.com;
     return 301 $scheme://domain.com$request_uri;
}

La sección servidor, donde se encuentra la configuración básica del dominio. :

server {
     listen  80;
     server_name domain.com;
.....
}

Después de realizar cambios en el archivo de configuración de Nginx, debe reiniciar el servidor web para que estos cambios surtan efecto.

nginx -s reload

o

systemctl reload nginx

Redirigir 301 s domain.com en www.domain.com

Para Nginx, debe crear dos secciones de servidor en el archivo de configuración, una para el dominio con www y la segunda para el dominio sin www:

The server section for redirects:

server {
     listen  80;
     server_name domain.ru;
     return 301 http://www.$host$request_uri;
}

La sección servidor, donde se encuentra la configuración básica del dominio.

server {
     listen  80;
     server_name www.domain.com;
.....
}

Después de realizar cambios en el archivo de configuración de Nginx, debe reiniciar el servidor web para que estos cambios surtan efecto.

nginx -s reload

o

systemctl reload nginx

redirección 301 de https a http

Para Nginx, debe crear dos secciones de servidor en el archivo de configuración, una para https (puerto 443) y la segunda para http (puerto 80).

La sección del servidor para abrir a través de https (puerto 443) y redirigir la configuración:

server {
    listen  443;
    server_name domain.ru www.domain.ru;
    return 301 http://$host$request_uri;
}

La sección del servidor para abrir a través de http (puerto 80), donde se encuentran las configuraciones principales del dominio.

server {
   listen  80;
   server_name www.domain.com;
.....
}

Después de realizar cambios en el archivo de configuración de Nginx, debe reiniciar el servidor web para que estos cambios surtan efecto.

nginx -s reload

o

systemctl reload nginx

redirección 301 de http a https

Para Nginx, debe crear dos secciones de servidor en el archivo de configuración, una para http (puerto 80) y la otra para https (puerto 443).

Para el nuevo dominio en el archivo conf de nginx

La sección del servidor para abrir a través de http (puerto 80) y configurar redirecciones:

server {
    listen  80;
    server_name domain.com www.domain.com;
    return 301 https://$host$request_uri;
}

La sección del servidor para abrir a través de https (puerto 443), donde se encuentran las configuraciones principales del dominio.

server {
    listen  IP.server:443;
    server_name www.domain.com;
.....
}

Para un dominio existente en el archivo conf de nginx

Si está realizando cambios en una sección existente del archivo nginx conf, hágalo así:

elimine la siguiente línea de la sección dominio principal

 listen  IP.server:80;

y cree una nueva sección de servidor de este tipo:

server {
    listen  80;
    server_name domain.com www.domain.com;
    return 301 https://$host$request_uri;
}

Después de realizar cambios en el archivo de configuración de Nginx, para que estos cambios surtan efecto, debe reiniciarlo así:

nginx -s reload

o

systemctl reload nginx