Apache: Redirigir desde http a https en todas sus variantes

Cabecera - Apache: Redirigir desde http a https en todas sus variantes

Apache: Redirigir desde http a https en todas sus variantes

  • Autor: fjavimartin

  • Fecha de Creación: 18/12/2018

  • Categorías:

    • Apache,
    • Mod_rewrite,
    • Virtualhost

En nuestro artículo de hoy mostraremos como configurar nuestro virtual host en apache para redirigir todas nuestras visitas desde http a https, desde https a http, desde dominio.com a www.dominio.es o directamente redirigir todo el tráfico de un dominio a otro.

Configuración de nuestros VirtualHosts

Partimos de la configuración de básica para un dominio alojado en un servidor con apache para el que estaremos escuchando tanto en el puerto 80 (http) como en el 443 (https).

<VirtualHost *:80>

ServerAdmin info@dominio.es 
ServerName www.dominio.es

DocumentRoot /var/www/dominio.es/

<Directory /var/www/dominio.es/>
	Options FollowSymLinks Indexes
	AllowOverride All
	order allow,deny
	allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/dominio.es_error.log
CustomLog ${APACHE_LOG_DIR}/dominio.es_access.log combined

</VirtualHost>

<VirtualHost *:443>

ServerAdmin info@dominio.es 
ServerName www.dominio.es

DocumentRoot /var/www/dominio.es/

<Directory /var/www/dominio.es/>
	Options FollowSymLinks Indexes
	AllowOverride All
	order allow,deny
	allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/dominio.es_error.log
CustomLog ${APACHE_LOG_DIR}/dominio.es_access.log combined

SSLEngine on
SSLCertificatekeyFile /etc/ssl/certs/dominio.es_le.key
SSLCertificateFile /etc/ssl/certs/dominio.es_le.crt

</VirtualHost>

Cualquier solicitud dirigida tanto a http://www.dominio.es como a https://www.dominio.es sería atendida por nuestro servidor sin ningún problema.

Redirección desde dominio.es a www.dominio.es

Lo primero que haremos en ambos virtualhost’s será incluir una línea con el ServerAlias correspondiente a nuestro dominio sin www’s con el objetivo de que nuestro servidor atienda también a estas solicitudes.

ServerAlias dominio.es

Lo primero que haremos será incluir la primera redirección desde nuestro dominio sin www’s a nuestro dominio con www añadiendo el siguiente código:

VirtualHost http
RewriteEngine On
RewriteOptions inherit
        
RewriteCond %{HTTP_HOST} ^dominio\.es
RewriteRule ^(.*)$ http://www.dominio.es$1 [R=permanent,L]

VirtualHost https
RewriteEngine On
RewriteOptions inherit
        
RewriteCond %{HTTP_HOST} ^dominio\.es
RewriteRule ^(.*)$ https://www.dominio.es$1 [R=permanent,L]

Lo que estamos haciendo con estas líneas será, mediante expresiones regulares, determinar las condiciones que tienen que darse para poder redirigir la solicitud y establecer el destino de la redirección.

Redirección desde http a https

De la misma forma que en el anterior apartado veíamos como redirigir las solicitudes desde dominio.es a www.dominio.es cambiando una sola línea podremos redirigir nuestras solicitudes desde http a https. En este caso la modificación solamente se dará en el virtualhost correspondiente que escuchará en el puerto 80.

RewriteEngine On
RewriteOptions inherit
        
RewriteCond %{HTTP_HOST} ^dominio\.es
RewriteRule ^(.*)$ https://www.dominio.es$1 [R=permanent,L]

Redirigir dominio completo a https

El último paso será redirigir todas las solicitudes que nos lleguen a http://domino.es o http://www.dominio.es a https://www.dominio.es y para ellos solo necesitaremos una línea.

<VirtualHost *:80>
	ServerAdmin info@dominio.es 
	ServerName www.dominio.es
	ServerAlias dominio.es
	Redirect / https://www.dominio.es/
</VirtualHost>

Resumen

Si hemos ido haciendo las modificaciones poco a poco nuestros VirtualHost’s se parecerán a los siguiente:

<VirtualHost *:80>

ServerAdmin info@dominio.es 
ServerName www.dominio.es

# Redirigir http://dominio.es http://www.dominio.es a https://www.dominio.es
# Redirect / https://www.dominio.es/
RewriteEngine On
RewriteOptions inherit
        
RewriteCond %{HTTP_HOST} ^dominio\.es
RewriteRule ^(.*)$ http://www.dominio.es$1 [R=permanent,L]

DocumentRoot /var/www/dominio.es/

<Directory /var/www/dominio.es/>
	Options FollowSymLinks Indexes
	AllowOverride All
	order allow,deny
	allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/dominio.es_error.log
CustomLog ${APACHE_LOG_DIR}/dominio.es_access.log combined

</VirtualHost>

<VirtualHost *:443>

ServerAdmin info@dominio.es 
ServerName www.dominio.es
RewriteEngine On
RewriteOptions inherit
        
RewriteCond %{HTTP_HOST} ^dominio\.es
RewriteRule ^(.*)$ https://www.dominio.es$1 [R=permanent,L]

DocumentRoot /var/www/dominio.es/

<Directory /var/www/dominio.es/>
	Options FollowSymLinks Indexes
	AllowOverride All
	order allow,deny
	allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/dominio.es_error.log
CustomLog ${APACHE_LOG_DIR}/dominio.es_access.log combined

SSLEngine on
SSLCertificatekeyFile /etc/ssl/certs/dominio.es_le.key
SSLCertificateFile /etc/ssl/certs/dominio.es_le.crt

</VirtualHost>

Referencias

https://www.sslshopper.com/apache-redirect-http-to-https.html

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

https://httpd.apache.org/docs/trunk/rewrite/remapping.html

Todos los Derechos Reservados © 2016

Funciona con Drupal