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
