Cómo configurar el archivo .htaccess para redireccionar HTTP a HTTPS
¿Por qué necesitas redirigir HTTP a HTTPS?
Hoy en día, tener tu sitio web bajo HTTPS ya no es opcional, es una necesidad. Los navegadores como Chrome o Firefox marcan los sitios sin cifrado como "No seguros", lo que ahuyenta a los visitantes y daña tu credibilidad. Además, Google utiliza el cifrado como un factor de posicionamiento, por lo que redirigir HTTP a HTTPS te ayuda a mejorar tu SEO.
El archivo .htaccess es un archivo de configuración que permite controlar el comportamiento del servidor Apache en tu alojamiento. Es la herramienta más común y sencilla para forzar HTTPS, ya que no requiere conocimientos avanzados de administración de servidores.
[INFO] Este tutorial está pensado para alojamientos que usan Apache. Si tu hosting usa Nginx, el proceso es diferente y no se trata en este artículo.
¿Qué es una redirección 301 y por qué usar 301 para HTTPS?
Una redirección 301 es una respuesta del servidor que indica de forma permanente que una URL ha cambiado a una nueva dirección. Es la forma correcta de redirigir HTTP a HTTPS porque:
- Conserva el posicionamiento SEO: Los buscadores entienden que la nueva URL es la versión canónica y transfieren la autoridad de la antigua a la nueva.
- Es permanente: El navegador y los buscadores recordarán el cambio y no volverán a intentar la URL antigua.
- Mejora la seguridad: El usuario siempre llega a la versión cifrada del sitio.
Si usas redirecciones 302 (temporales), los buscadores no transferirán la autoridad y podrías perder posiciones en Google. Por eso, siempre usaremos el código 301.
Requisitos previos antes de tocar el .htaccess
Antes de empezar, asegúrate de que tu servidor cumple estos requisitos:
- Tienes un certificado SSL instalado: Puede ser gratuito (Let's Encrypt) o de pago. Sin certificado, la redirección provocará errores de conexión.
- Acceso al archivo
.htaccess: Necesitas poder ver y editar este archivo. Puedes hacerlo desde el administrador de archivos de tu panel de control (cPanel, Plesk, Syspanel) o mediante FTP/SFTP. - Tener una copia de seguridad: Antes de modificar cualquier archivo de configuración, haz una copia del
.htaccessoriginal. Así podrás restaurarlo si algo falla.
[TIP] Si usas Syspanel (antes conocido como HestiaCP), puedes acceder al administrador de archivos desde el panel en el puerto 2106. Busca la carpeta
public_htmlde tu dominio y ahí encontrarás el archivo.htaccess. Si no existe, puedes crearlo.
Cómo localizar el archivo .htaccess
El archivo .htaccess suele estar en la raíz de tu dominio, normalmente en una carpeta llamada public_html, htdocs o www. Es un archivo oculto (empieza con un punto), por lo que deberás activar la opción de "mostrar archivos ocultos" en tu gestor de archivos o cliente FTP.
Pasos para encontrarlo:
- Entra al panel de control de tu hosting (cPanel, Plesk, Syspanel, etc.).
- Abre el administrador de archivos.
- Navega hasta la carpeta raíz de tu dominio.
- Activa la opción de mostrar archivos ocultos.
- Busca el archivo
.htaccess. Si no existe, puedes crearlo con un editor de texto.
[WARNING] No confundas el
.htaccessde la raíz con otros.htaccessque puedan existir en subcarpetas. Para la redirección global de HTTP a HTTPS, debes modificar el de la raíz.
Método 1: Redirección 301 con reglas condicionales
Este es el método más recomendado porque funciona en la mayoría de los servidores y es muy claro de entender. Se basa en comprobar si la conexión no es segura y, si no lo es, redirigir a la versión HTTPS.
Abre tu archivo .htaccess y añade el siguiente bloque de código al principio (después de la línea RewriteEngine On si ya existe, o creándolo):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Explicación línea a línea:
<IfModule mod_rewrite.c>: Comprueba que el módulo de reescritura está activo. Si no lo está, no se ejecuta nada y se evitan errores.RewriteEngine On: Activa el motor de reescritura.RewriteCond %{HTTPS} off: Esta condición se cumple cuando la conexión NO es HTTPS.RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]: Redirige toda la URL a su versión HTTPS con una redirección 301.%{HTTP_HOST}es el nombre de tu dominio y%{REQUEST_URI}es la ruta completa (por ejemplo,/blog/articulo).
[TIP] Este método funciona tanto si usas
wwwcomo si no. La redirección conservará el subdominio que el usuario haya escrito.
Método 2: Redirección directa con tu dominio específico
Si prefieres ser más explícito y usar tu dominio directamente, puedes usar este método. Es útil si tienes problemas con el método anterior o si quieres forzar una versión concreta (con o sin www).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tudominio\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://tudominio.com/$1 [L,R=301]
</IfModule>
Sustituye tudominio.com por tu dominio real. Este código es más rígido porque solo aplica a ese dominio exacto.
Redirigir también a un solo subdominio (www o no-www):
Si quieres que además de forzar HTTPS, todos los visitantes vayan a www.tudominio.com o a tudominio.com (sin www), puedes combinar las reglas:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.tudominio\.com$ [NC]
RewriteRule ^(.*)$ https://www.tudominio.com/$1 [L,R=301]
</IfModule>
Este código redirige tanto HTTP a HTTPS como cualquier subdominio a la versión www.
[INFO] Decide si quieres usar
wwwo no y mantén una única versión canónica. Esto evita problemas de contenido duplicado en SEO.
Método 3: Usar variables de servidor (para servidores tras proxies)
A veces, el servidor está detrás de un proxy (por ejemplo, Cloudflare o un balanceador de carga). En esos casos, %{HTTPS} puede no funcionar correctamente porque el servidor ve la conexión del proxy (que es HTTP) y no la del visitante.
Para solucionarlo, puedes usar la variable HTTP_X_FORWARDED_PROTO:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
[WARNING] Este método solo lo uses si sabes que tu hosting usa un proxy. Si no estás seguro, prueba primero el método 1. Si no funciona, pregunta a tu proveedor.
Qué hacer después de guardar el archivo
Una vez que hayas guardado los cambios en el .htaccess, es hora de probar:
- Borra la caché del navegador o usa una ventana de incógnito.
- Escribe en la barra de direcciones
http://tudominio.com(sin las). - Observa si te redirige automáticamente a
https://tudominio.com. - Comprueba una página interna como
http://tudominio.com/contacto.
Si la redirección funciona, verás que la URL cambia a HTTPS en menos de un segundo.
Cómo verificar que la redirección es 301:
Puedes usar herramientas online o la línea de comandos:
curl -I http://tudominio.com
Deberías ver una respuesta con código 301 Moved Permanently y la cabecera Location: https://tudominio.com/.
Solución de problemas comunes
Error: "Demasiadas redirecciones" (ERR_TOO_MANY_REDIRECTS)
Este error ocurre cuando hay un bucle de redirecciones. Las causas más comunes son:
- Tienes otra regla de redirección que interfiere, por ejemplo, una que redirige HTTPS a HTTP.
- El certificado SSL no está bien instalado en el dominio.
- Estás usando un proxy o CDN que no está configurado correctamente.
Solución: Revisa tu .htaccess completo y elimina cualquier otra regla de redirección que pueda entrar en conflicto. Si usas Cloudflare, asegúrate de que el modo SSL está en "Full" o "Full (strict)".
Error: "No tienes permiso para acceder" (403)
Esto suele pasar si el archivo .htaccess tiene permisos demasiado restrictivos o si hay una sintaxis incorrecta.
Solución: Comprueba que los permisos del archivo sean 644 (lectura y escritura para el propietario, solo lectura para el grupo y el resto). Si el error persiste, revisa la sintaxis del archivo.
La redirección no funciona
Si has guardado el archivo y no pasa nada, puede ser que:
- El módulo
mod_rewriteno esté activado en tu Apache. Contacta con tu hosting. - El archivo
.htaccessno se está leyendo. En algunos servidores, la directivaAllowOverrideestá desactivada. Pregunta a tu proveedor. - Estás editando el archivo equivocado. Asegúrate de que es el
.htaccessde la raíz.
[TIP] Si tu hosting usa Syspanel, puedes verificar si Apache tiene
mod_rewriteactivo en la sección de "Servicios" o contactando con el soporte. Recuerda que el acceso al panel es a través del puerto 2106.
Preguntas frecuentes (FAQ)
¿Debo usar www o no www?
Depende de tu preferencia y de cómo tengas configurado tu certificado SSL. Lo importante es que uses una única versión y redirijas la otra hacia ella. Google lo recomienda por claridad y para evitar contenido duplicado.
¿Esta redirección afecta a mi SEO?
Sí, positivamente. Google da preferencia a los sitios HTTPS y una redirección 301 transfiere toda la autoridad de la URL antigua a la nueva. Es la forma correcta de migrar a HTTPS.
¿Puedo usar esta redirección en un subdominio?
Sí, el método 1 funciona para cualquier subdominio siempre que tenga su propio certificado SSL. Solo debes colocar el .htaccess en la raíz de ese subdominio.
¿Qué pasa si mi hosting no tiene Apache?
Si tu servidor usa Nginx, no podrás usar .htaccess. Deberás editar el archivo de configuración de Nginx (nginx.conf) o usar los plugins de tu CMS. Si tu hosting es de pago, el proveedor suele ofrecer una opción para forzar HTTPS desde el panel.
¿Puedo hacer la redirección desde el panel de control en lugar del .htaccess?
Sí, muchos paneles como cPanel o Syspanel (puerto 2106) ofrecen una opción para forzar HTTPS automáticamente. Sin embargo, usar el .htaccess te da más control y funciona incluso si el panel no tiene esa opción.
¿Qué hago si tengo WordPress?
WordPress tiene su propia forma de forzar HTTPS, pero el método del .htaccess también funciona. De hecho, es recomendable usarlo como respaldo. Puedes añadir las reglas al principio del archivo, antes de las líneas de WordPress.
Conclusión y buenas prácticas
Redirigir HTTP a HTTPS es una de las tareas más importantes para la seguridad y el SEO de tu sitio web. Con el archivo .htaccess puedes hacerlo de forma rápida y sin depender de plugins o paneles.
Resumen de buenas prácticas:
- Usa siempre redirecciones 301, nunca 302.
- Haz una copia de seguridad del
.htaccessantes de editarlo. - Prueba en incógnito para evitar caché.
- Verifica con
curlque la redirección es correcta. - Mantén una única versión canónica (con o sin
www).
[INFO] Recuerda que si utilizas Syspanel (puerto 2106), puedes acceder a todas las herramientas de gestión de tu sitio, incluido el administrador de archivos, para editar el
.htaccessde forma visual.
Si has seguido todos los pasos, tu sitio ya debería estar redirigiendo todo el tráfico HTTP a HTTPS de forma permanente. Esto no solo mejora tu posicionamiento en Google, sino que protege los datos de tus visitantes y genera confianza en tu marca.
¿Tienes alguna duda o problema con la configuración? Déjala en los comentarios y te ayudaremos a resolverla. ¡Nos vemos en el próximo tutorial!
