Forzar HTTP a HTTPS en WordPress (servidor Apache)

Siempre debe cargar su sitio con HTTPS. Además de proteger la integridad de sus datos entre sus sitios web y los usuarios de su sitio, HTTPS ahora es un requisito para muchas nuevas API de navegador, como la API de geolocalización.

HTTPS también tiene cierto peso en la señal de clasificación SERP de Google. Por lo tanto, es crucial asegurarse de que su sitio siempre se cargue desde HTTPS. Le mostraremos cómo hacerlo con Apache en este tutorial.

Tenga en cuenta que antes de continuar con este paso, asegúrese de tener el certificado SSL instalado y cargado en el servidor. De lo contrario, consulte nuestro tutorial sobre la Guía para principiantes de certificados SSL de sitios web.

Si todo está listo, puede continuar con el siguiente paso.

HTTP a HTTPS

Si se puede acceder a su sitio web de WordPress directamente en http://www.domain.com y desea dirigir a todos los visitantes de HTTP a HTTPS, luego pruebe cualquiera de los siguientes códigos .htaccess.

Opción 1:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Opcion 2:

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Explicación

Tanto la opción 1 como la 2 redirigirá a cualquiera que acceda http://www.domain.com a https://www.domain.com

Opción 1 los códigos comprobarán si la conexión es TLS/SSL, mientras que opcion 2 los códigos verificarán si el sitio se ejecuta en el puerto 80 que, por defecto, es el número de puerto de HTTP.

«no-www» > «www» y HTTP > HTTPS

Si desea forzar «no-www» a «www» y HTTP a HTTPS, entonces los códigos .htaccess anteriores no serán suficientes.

Para poner las cosas en perspectiva, si su objetivo es redirigir las siguientes URL:

  • http://www.domain.com

  • http://domain.com

a:

Luego, deberá usar los códigos .htaccess a continuación.


RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Explicación

Primero, redirige cualquier «no-www» a «www», luego verifica si hay HTTPS, asegurándose de que el resultado final sea: www + HTTPS.

«no-www» > «www» y HTTP > HTTPS (en subcarpeta)

Ahora, si está, como nosotros, alojando su sitio web de WordPress en una subcarpeta (es decir, www.domain.com/blog/), entonces los códigos .htaccess mencionados anteriormente no funcionarán perfectamente.

El objetivo aquí es redirigir todas las URL (independientemente de si es la página de inicio o las páginas de publicación) a una URL www + HTTPS.

Echemos un vistazo a todas las posibilidades de URL que necesitaremos redirigir «de«, y redireccionar»a“.

Condición 1

Necesitamos redirigir todas las siguientes URL desde:

a una URL unificada de:

Condición 2

y publicar direcciones URL desde:

a:

Cuando su WordPress está alojado en una subcarpeta (Ej. /blog/), lo más probable es que tenga dos archivos .htaccess, es decir, un archivo .htaccess fuera de la subcarpeta y otro dentro de la subcarpeta donde está instalado WordPress. Y tendremos que modificar ambos.


.htaccess
blog/
blog/.htaccess
.htaccess fuera de la subcarpeta

Inserte los siguientes códigos en .htaccess fuera de la subcarpeta.


RewriteEngine On
### non-www to www, http to https
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^domain.com$ [OR]
RewriteRule (.*) https://www.domain.com/$1 [R=301,L]

### subfolder
RewriteRule ^$ /blog/ [R=301]

Esto es lo que hace esta parte del código. Primero, se asegura de que el dominio se redirige a www con HTTPS, luego se redirige a la subcarpeta. Esto satisfará la #condición 1 mencionada anteriormente, pero no funcionará para la condición #2, al menos no todavía.

.htaccess dentro de la subcarpeta

A continuación, necesitaremos modificar el código .htaccess dentro de la subcarpeta.

De forma predeterminada, debería verse algo como esto:


# 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

Coloque el siguiente código .htaccess en la parte superior y antes de «# BEGIN WordPress»


<IfModule mod_rewrite.c>
RewriteEngine On
## http to https
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Con estos dos conjuntos de códigos en su lugar, se asegurará de que cualquier URL ingresada se incluya con www y HTTPS.

Le insto a que no implemente esto en su sitio en vivo. Pruébelo varias veces en un sitio de ensayo/prueba, asegurándose de obtener los resultados que desea antes de implementarlo en vivo.

Una cosa más, para asegurarse de que su redireccionamiento sea preciso, asegúrese de borrar las cookies y el caché del navegador antes de comenzar cada prueba.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio