· Tutorial ·

Redirigir automáticamente a conexión segura 'https'

Por defecto, una vez instalado tu certificado SSL, las visitas a la versión no segura ("http://www.tudominio.com") no serán automáticamente redirigidas a la versión segura ("https://www.tudominio.com").

Te indicamos varias formas de configurar la redirección automática a "https", o dicho de otra forma, de puerto 80 (http) a puerto 443 (https).

Mediante archivo ".htaccess" en Apache

Esta es la forma más rápida y sencilla de hacerlo en el caso de estar utilizando un servidor Apache (la mayoría). Vamos a configurar la redirección añadiendo las líneas que a continuación te indicaremos en el archivo ".htaccess". Para ello:

  • Conéctate vía FTP al directorio "/datos/web/" y edita el archivo ".htaccess". Si no existe, créalo.

  • Añade las siguientes líneas:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  • Guarda los cambios.

Aviso: Algunos gestores de contenido (CMS), como WordPress, modifican el archivo ".htaccess" con su propia configuración. En estos casos deberás configurar la redirección en su panel de configuración o utilizar alguno de los siguientes métodos.

Modificando Virtual Host (vhost) en Apache

Si dispones de un Cloud con acceso "root", puedes optar por configurar la redirección modificando el Virtual Host en Apache:

  • Conéctate vía SSH a tu servidor.

  • Introduce el siguiente comando para mostrar la configuración actual de Virtual Hosts: apache2ctl -S

  • Del bloque correspondiente al puerto 80, copia la ruta del archivo que se corresponda con la web a la cual vas a aplicar la redirección. A modo de ejemplo, nos fijaremos en el dominio "swhosting.com":

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server cm2019012345678.dnssw.net (/etc/apache2/sites-enabled/000-default.conf:17)
         port 80 namevhost cm2019012345678.dnssw.net (/etc/apache2/sites-enabled/000-default.conf:17)
         port 80 namevhost swhosting.com (/etc/apache2/sites-enabled/swhosting.com.conf:2)
                 alias www.swhosting.com
  • En este caso, la ruta es: /etc/apache2/sites-enabled/swhosting.com.conf

  • Edita el archivo de configuración anterior. En este ejemplo utilizamos el editor de textos nano, pero puedes hacer uso de cualquier otro: nano /etc/apache2/sites-enables/swhosting.com.conf

  • Aparece un primer bloque correspondiente al puerto 80 (http):

<VirtualHost *:80>
    ServerName swhosting.com
    ServerAlias www.swhosting.com
    DocumentRoot "/var/www/swhosting.com/datos/web"
</VirtualHost>
  • Añadimos las siguientes líneas antes del cierre "<​/VirtualHost>":
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  • Quedando de la siguiente forma:
<VirtualHost *:80>
    ServerName swhosting.com
    ServerAlias www.swhosting.com
    DocumentRoot "/var/www/swhosting.com/datos/web"
	RewriteEngine On
	RewriteCond %{HTTPS} off
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
  • Guardamos los cambios realizados. En el editor de textos nano, debes pulsar Ctrl + X para guardar y salir, Tecla Y para confirmar que quieres sobrescribir, y Tecla Enter

  • Comprobamos que la configuración es correcta: apache2ctl -t Tiene que aparecer Syntax OK. Si se indica algún error, repasa los pasos anteriores.

  • Recargamos la configuración de Apache para que se apliquen los cambios: /etc/init.d/apache2 graceful

A continuación, accede a tu dominio con el prefijo "http://" para comprobar si automáticamente redirige a "https://".

Modificando Virtual Host (vhost) en Nginx

Si dispones de un Cloud con acceso "root", puedes optar por configurar la redirección modificando el Virtual Host en Nginx:

  • Conéctate vía SSH a tu servidor.

  • Accedemos al directorio en el que se encuentra el archivo de configuración del Virtual Host y listamos el contenido. Habitualmente: cd /etc/nginx/sites-enabled ls

  • Editamos el archivo que se corresponda con el Virtual Host para el que vamos a aplicar la redirección a "https". En este ejemplo utilizamos el editor de textos nano, pero puedes hacer uso de cualquier otro: nano /etc/nginx/sites-enabled/swhosting.com.conf

  • Aparece un primer bloque correspondiente al puerto 80 (http):

server {
        listen 80;
        root "/var/www/swhosting.com/datos/web";
        index index.html index.php;
        server_name swhosting.com www.swhosting.com;
	}
  • Añadimos la siguiente línea:
return 301 https://$server_name$request_uri;
  • Quedando de la siguiente forma:
server {
        listen 80;
        root "/var/www/swhosting.com/datos/web";
        index index.html index.php;
        server_name swhosting.com www.swhosting.com;
        return 301 https://$server_name$request_uri;
	}
  • Guardamos los cambios realizados. En el editor de textos nano, debes pulsar Ctrl + X para guardar y salir, Tecla Y para confirmar que quieres sobrescribir, y Tecla Enter

  • Comprobamos que la configuración es correcta: nginx -t Si todo es correcto, aparece algo similar a:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si se indica algún error, repasa los pasos anteriores.

  • Recargamos la configuración de Nginx para que se apliquen los cambios: /etc/init.d/nginx reload

A continuación, accede a tu dominio con el prefijo "http://" para comprobar si automáticamente redirige a "https://".

i