Cómo redirigir HTTP a HTTPS en Apache


HTTP (Protocolo de transferencia de hipertexto) es un protocolo popular y fundamental para la comunicación de datos en la World Wide Web (WWW); normalmente entre un navegador web y el servidor que almacena archivos web. Mientras que HTTPS es la versión segura de HTTP, donde la "S" al final significa "Seguro".

Usando HTTPS, todos los datos entre su navegador y el servidor web están encriptados, por lo que son seguros. Este tutorial le mostrará cómo redirigir HTTP a HTTPS en el servidor HTTP Apache en Linux.

Antes de que pueda configurar un redireccionamiento Apache HTTP a HTTPS para su dominio, asegúrese de tener un certificado SSL instalado y de que mod_rewrite esté habilitado en Apache. Para obtener más información sobre cómo configurar SSL en Apache, consulte las siguientes guías.

  1. Cómo crear claves y certificados SSL autofirmados para Apache
  2. Cómo instalar Let's Encrypt SSL Certificate en CentOS/RHEL 7
  3. Cómo instalar Let's Encrypt SSL Certificate en Debian/Ubuntu

Redirigir HTTP a HTTPS en Apache mediante el archivo .htaccess

Para este método, asegúrese de que mod_rewrite esté habilitado; de lo contrario, habilítelo así en los sistemas Ubuntu/Debian.

$ sudo a2enmod rewrite	[Ubuntu/Debian]

Para los usuarios de CentOS/RHEL, asegúrese de tener la siguiente línea en httpd.conf (compatibilidad con mod_rewrite, habilitada de forma predeterminada).

LoadModule rewrite_module modules/mod_rewrite.so

Ahora solo necesita editar o crear un archivo .htaccess en el directorio raíz de su dominio y agregar estas líneas para redirigir http a https.

RewriteEngine On 
RewriteCond %{HTTPS}  !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

Ahora, cuando un visitante escribe http://www.yourdomain.com , el servidor redirigirá automáticamente HTTP a HTTPS https://www.yourdomain.com .

Redirigir HTTP a HTTPS en Apache Virtual Host

Además, para obligar a todo el tráfico web a utilizar HTTPS, también puede configurar su archivo de host virtual. Normalmente, hay dos secciones importantes de las configuraciones de un host virtual si se habilita un certificado SSL; el primero contiene configuraciones para el puerto 80 no seguro.

El segundo es para el puerto seguro 443. Para redirigir HTTP a HTTPS para todas las páginas de su sitio web, primero abra el archivo de host virtual correspondiente. Luego modifíquelo agregando la configuración a continuación.

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName www.yourdomain.com
   Redirect / https://www.yourdomain.com
</VirtualHost>

<VirtualHost _default_:443>
   ServerName www.yourdomain.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
# etc...
</VirtualHost>

Guarde y cierre el archivo, luego reinicie el servidor HTTP de esta manera.

$ sudo systemctl restart apache2     [Ubuntu/Debian]
$ sudo systemctl restart httpd	     [RHEL/CentOS]

Mientras que es la solución más recomendada porque es más simple y segura.

Es posible que desee leer esta útil variedad de artículos sobre el refuerzo de la seguridad del servidor HTTP Apache:

  1. 25 trucos útiles de Apache ".htaccess" para proteger y personalizar sitios web
  2. Cómo proteger con contraseña los directorios web en Apache mediante el archivo .htaccess
  3. Cómo ocultar el número de versión de Apache y otra información confidencial
  4. Proteja Apache contra ataques de fuerza bruta o DDoS mediante Mod_Security y Mod_evasive

¡Eso es todo! Para compartir cualquier opinión sobre esta guía, utilice el formulario de comentarios a continuación. Y recuerde estar siempre conectado a Tecmint.com.