Mucha gente no sabe que se puede redirigir Apache HTTP; te explicaremos cómo hacerlo. HTTP (protocolo de transferencia de hipertexto) es el protocolo principal para el intercambio de datos en la World Wide Web (WWW, la web mundial) — generalmente, entre un navegador web y el servidor que almacena los archivos web. Al mismo tiempo, HTTPS es una versión segura de HTTP, donde la “S” al final significa “Secure” (seguro).
Cuando usas HTTPS, todos los datos entre tu navegador y el servidor web están encriptados, aumentando así el nivel de seguridad. En este artículo se mostrará cómo redirigir el tráfico HTTP a HTTPS para un servidor HTTP Apache en Linux.
Antes de poder configurar la redirección de Apache HTTP a HTTPS para tu dominio, asegúrate de tener instalado un certificado SSL y de que mod_rewrite
esté habilitado en Apache.
Redirigir HTTP a HTTPS en Apache usando el archivo .htaccess
Primero, asegúrate de que el módulo mod_rewrite
esté habilitado; de lo contrario, ¡DEBES habilitarlo!
- Ubuntu/Debian
sudo a2enmod rewrite
- CentOS/RHEL, verifica si está habilitado
sudo httpd -M | grep rewrite
- CentOS/RHEL, descomenta si es necesario
sudo sed -i '/LoadModule rewrite_module/s/^#//g' /etc/httpd/conf/httpd.conf
Asegúrate de que el archivo de configuración de tu sitio (por ejemplo, /etc/apache2/sites-available/000-default.conf
en Ubuntu/Debian o /etc/httpd/conf/httpd.conf
en CentOS/RHEL) tenga la directiva AllowOverride All
en el bloque <Directory>
correspondiente, para que .htaccess
funcione.
Ahora, edita o crea un archivo .htaccess
en el directorio raíz de tu dominio (requiere permisos de superusuario):
sudo nano /var/www/html/.htaccess
Y añade 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.tudominio.com
, el servidor redirige automáticamente HTTP a HTTPS (https://www.tudominio.com
). Si prefieres el dominio sin www
, reemplaza www.tudominio.com
por tudominio.com
en las reglas.
Cómo redirigir HTTP a HTTPS en un host virtual de Apache
Además de hacer que todo el tráfico web use HTTPS, también puedes configurar tu archivo de host virtual. Hay dos configuraciones importantes si se ha habilitado un certificado SSL.
El primero contiene la configuración para el puerto no seguro 80.
El segundo, para el puerto seguro 443. Para redirigir HTTP a HTTPS para todas las páginas de tu sitio web, abre el archivo de host virtual correspondiente (por ejemplo, /etc/apache2/sites-available/000-default.conf
en Ubuntu/Debian o /etc/httpd/conf.d/vhost.conf
en CentOS/RHEL) con permisos de superusuario:
sudo nano /etc/apache2/sites-available/000-default.conf
Modifícalo añadiendo la configuración que se muestra a continuación:
<VirtualHost *:80>
ServerName www.tudominio.com
Redirect / https://www.tudominio.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.tudominio.com
DocumentRoot /var/www/html
SSLEngine On
SSLCertificateFile /path/to/tudominio.com.crt
SSLCertificateKeyFile /path/to/tudominio.com.key
</VirtualHost>
Si prefieres el dominio sin www
, usa tudominio.com
en lugar de www.tudominio.com
.
Verifica la sintaxis de la configuración antes de reiniciar:
- Ubuntu/Debian
sudo apache2ctl configtest
- CentOS/RHEL
sudo httpd -t
Guarda y cierra el archivo, y luego reinicia el servidor HTTP:
- Ubuntu/Debian
sudo systemctl restart apache2
- CentOS/RHEL
sudo systemctl restart httpd
<VirtualHost>
es la solución más recomendada porque es simple, segura y no depende de la configuración de AllowOverride
.
Preguntas sobre el artículo en la sección de comentarios.
Pingback: Cómo Saber Quién está Conectado a los Puertos HTTP o HTTPS » Blog