Hola chicos ! En este tutorial, mostraremos cómo redirigir a la fuerza Apache HTTP a HTTPS
Si es propietario de un sitio web o administrador del sistema, lo más probable es que esté tratando con Apache de forma regular. Una de las tareas más comunes que probablemente realizará es redirigir el tráfico HTTP a la versión segura (HTTPS) de su sitio web.
A diferencia de HTTP, donde las solicitudes y respuestas se envían y devuelven en texto sin formato, HTTPS utiliza TLS/SSL para cifrar la comunicación entre el cliente y el servidor.
Veremos esto de dos maneras diferentes:
i. Uso de alojamiento virtual.
ii. Usando .htaccess
Empecemos
Uso de alojamiento virtual
En la directiva de host virtual, puede especificar la raíz del documento del sitio (el directorio que contiene los archivos del sitio web), crear una política de seguridad separada para cada sitio, usar diferentes certificados SSL, configurar la redirección y mucho más.
Cuando se instala un certificado SSL en un dominio, tendrá dos directivas de host virtual para ese dominio. El primero para la versión HTTP del sitio en el puerto 80 y el otro para la versión HTTPS en el puerto 443.
En las distribuciones basadas en Red-Hat, como CentOS y Fedora, los archivos de host virtual se almacenan en /etc/httpd/conf.d. Mientras que en Debian y sus derivados como Ubuntu, los archivos se almacenan en /etc/apache2/sites-available
directorio.
Para redirigir un sitio web a HTTPS, use el Redirect
directiva como se muestra en el ejemplo “unixcop.com”
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
</VirtualHost>
Explicación
Vamos a tener una explicación del código anterior
VirtualHost *:80
– El servidor Apache escucha las conexiones entrantes en el puerto 80 (HTTP) para el dominio especificado.VirtualHost *:443
– El servidor Apache escucha las conexiones entrantes en el puerto 443 (HTTPS) para el dominio especificado.
El ServerName
y ServerAlias
Las directivas especifican los nombres de dominio del host virtual. Asegúrese de reemplazarlo con su nombre de dominio. (en nuestro caso unixcop.com)
La línea resaltada, Redirect permanent / https://example.com/
dentro del host virtual HTTP, redirige el tráfico a la versión HTTPS del sitio.
Por lo general, también desea redirigir la versión HTTPS www del sitio a la que no es www o viceversa. Aquí hay una configuración de ejemplo:
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.unixcop.com'">
Redirect permanent / https://unixcop.com/
</If>
</VirtualHost>
El código anterior está comprobando si el encabezado de la solicitud contiene el dominio www y redirige a la versión que no es www.
Cada vez que realice cambios en los archivos de configuración, debe reiniciar o recargar el servicio Apache para que los cambios surtan efecto
.htaccess
es un archivo de configuración por directorio para el servidor web Apache. Este archivo se puede usar para definir cómo Apache sirve archivos desde el directorio donde se coloca el archivo y para habilitar/deshabilitar funciones adicionales.
Por lo general, el .htaccess
El archivo se coloca en el directorio raíz del dominio, pero puede tener otro .htaccess
archivos en los subdirectorios.
Este método requiere el mod_rewrite
módulo para ser cargado en el servidor Apache. Este módulo se carga de forma predeterminada en la mayoría de los servidores. Si es posible, prefiera crear una redirección en el host virtual porque es más simple y seguro.
Para redirigir todo el tráfico HTTP a HTTPS, abra la raíz .htaccess
y agréguele el siguiente código
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Explicación
RewriteEngine On
– habilita las capacidades de reescritura.RewriteCond %{HTTPS} off
– comprueba la conexión HTTP y, si se cumple la condición, se ejecuta la siguiente línea.RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
– redirigir HTTP a HTTPS con el código de estado 301 (Movido permanentemente).
El siguiente ejemplo tiene una condición adicional que verifica si la solicitud comienza con www
. Úselo para obligar a todos los visitantes a usar la versión HTTPS no www del sitio
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Al editar .htaccess
archivo, no necesita reiniciar el servidor porque Apache lee el archivo en cada solicitud.
Entonces, ya sabe cómo obligar a Apache a usar HTTPS.
Documentación de Apache