Seguridad y SSL

Cómo forzar HTTPS en WordPress con .htaccess (sin plugins)

Aprende a configurar la redirección HTTPS en el archivo .htaccess de WordPress sin instalar ningún plugin, en menos de cinco minutos.

Close-up of a steel padlock on a mesh fence, symbolizing protection and security.

Para forzar HTTPS en WordPress sin plugins, agrega estas tres líneas al inicio de tu archivo .htaccess, justo antes del bloque de WordPress:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Eso es todo lo esencial. El resto de este artículo te explica por qué funciona, cómo manejarlo correctamente para distintos escenarios (www vs. sin www, subdominios, Cloudflare) y qué errores evitar.

Por qué editar .htaccess en lugar de instalar un plugin

Los plugins de redirección HTTPS son convenientes, pero añaden una capa de código PHP que se ejecuta en cada petición. Una regla en .htaccess la procesa directamente Apache —antes de que PHP arranque— lo que significa:

  • Menor tiempo de respuesta.
  • Un dependency menos que mantener actualizada.
  • Sin riesgo de que el plugin se desactive por actualización o conflicto.

Si tu hosting usa Apache con mod_rewrite (la gran mayoría de los planes cPanel), esta es la solución más limpia.

Cómo acceder y editar el archivo .htaccess

El archivo .htaccess vive en la raíz de tu instalación de WordPress (la misma carpeta donde están wp-config.php y la carpeta wp-content). Tienes tres formas de editarlo:

Opción 1: Administrador de archivos de cPanel

  1. Inicia sesión en cPanel y abre el Administrador de Archivos.
  2. Navega a public_html (o la subcarpeta donde instalaste WordPress).
  3. Activa la opción "Mostrar archivos ocultos" si el archivo no aparece.
  4. Haz clic derecho sobre .htaccess → Editar.

Opción 2: Cliente FTP / SFTP

Con FileZilla u otro cliente, conéctate a tu servidor, localiza .htaccess en la raíz del sitio y descárgalo para editarlo localmente. Guarda y vuelve a subir el archivo.

Opción 3: SSH

Si tienes acceso SSH, simplemente ejecuta nano public_html/.htaccess y edita en el servidor directamente.

Las reglas de redirección: todos los escenarios

El bloque de WordPress en .htaccess normalmente luce así:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Debes pegar tu regla HTTPS antes del comentario # BEGIN WordPress. WordPress regenera el bloque marcado y borraría tus reglas si las pones dentro.

Redirección básica (HTTP → HTTPS, cualquier dominio)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Forzar también www (con HTTPS)

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Forzar sin www (con HTTPS)

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]

Si tu sitio está detrás de Cloudflare o un proxy inverso

Cloudflare termina el SSL en su borde y envía las peticiones al origen como HTTP. En ese caso %{HTTPS} siempre vale off aunque el visitante use HTTPS. Usa la cabecera que Cloudflare agrega:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Importante: no uses X-Forwarded-Proto si tu tráfico no pasa por un proxy de confianza —cualquier visitante podría forjar esa cabecera.

Actualizar WordPress después de la redirección

Después de agregar la regla, asegúrate de que WordPress también sepa que el sitio corre en HTTPS:

  1. Ve a Ajustes → General en el panel de administración.
  2. Cambia tanto la Dirección de WordPress como la Dirección del sitio para que empiecen con https://.
  3. Guarda. WordPress cerrará tu sesión; vuelve a iniciarla por HTTPS.

Si tienes contenido mixto (imágenes o scripts que aún cargan por HTTP), instala temporalmente el plugin Really Simple SSL o usa un query SQL de búsqueda y reemplazo en la base de datos para cambiar las URLs almacenadas.

Para hosting de alto rendimiento donde la seguridad y la velocidad van de la mano, consulta los planes disponibles en elenlace.com.

Errores comunes y cómo evitarlos

Error Causa Solución
Bucle de redirección infinita La regla redirige también las peticiones HTTPS Asegúrate de que la condición %{HTTPS} off está presente
Error ERR_TOO_MANY_REDIRECTS con Cloudflare SSL de Cloudflare en modo "Flexible" + tu regla de redirección Cambia el modo a "Full (strict)" en el panel de Cloudflare
Las reglas se borran solas Están dentro del bloque # BEGIN/# END WordPress Ponlas antes de ese bloque
Certificado no encontrado El SSL no está instalado o ha vencido Instala o renueva el certificado en cPanel primero

Si necesitas una guía completa sobre certificados SSL, revisa nuestra sección de seguridad SSL y HTTPS donde cubrimos instalación, renovación y tipos de certificados.

Conclusiones clave

  • Agrega la regla de redirección HTTPS antes del bloque # BEGIN WordPress para que no se sobreescriba.
  • Usa %{HTTPS} off como condición para evitar bucles infinitos.
  • Si usas Cloudflare, cambia el modo SSL a Full (strict) y utiliza X-Forwarded-Proto como condición.
  • Actualiza las URLs del sitio en Ajustes → General para que WordPress sirva todo por HTTPS.
  • Corrige el contenido mixto después de la migración para mantener el candado verde en el navegador.

¿Tu sitio ya tiene el certificado SSL instalado pero todavía no redirige el tráfico? Aplica las reglas de este artículo y, si necesitas ayuda profesional, el equipo de elenlace.com puede configurarlo por ti.

Preguntas frecuentes

¿Necesito tener el certificado SSL instalado antes de agregar la regla?

Sí, absolutamente. Si agregas la redirección sin tener un certificado válido, los visitantes verán un error de seguridad en el navegador y no podrán acceder al sitio. Instala primero el SSL (Let's Encrypt en cPanel es gratuito) y luego agrega la regla.

¿La redirección 301 afecta el SEO?

Al contrario: Google recomienda HTTPS y la redirección 301 transfiere casi todo el "link juice" de tus URLs HTTP a las HTTPS. A corto plazo puede haber una pequeña fluctuación en rankings; a mediano plazo el sitio HTTPS se posiciona mejor.

¿Puedo usar estas reglas en WordPress Multisite?

Sí, con cuidado. En Multisite con subdominio la regla básica funciona igual. Si usas subcarpetas, asegúrate de que RewriteBase esté correctamente configurado para cada sitio. Prueba en staging primero.

¿Qué diferencia hay entre R=301 y R=302?

Un 301 es una redirección permanente: le dice a los buscadores que la URL ha cambiado definitivamente y deben actualizar su índice. Un 302 es temporal: los buscadores no transfieren el valor SEO. Siempre usa 301 para pasar de HTTP a HTTPS de forma definitiva.

Para saber más

Otros proveedores y guías que vale la pena comparar:

← Todos