Cómo redireccionar de http a https en WordPress

wordpress

Gracias al proyecto Let’s Encrypt y a WordPress hoy es muy fácil migrar su sitio de http a https (versión segura del protocolo http). El siguiente procedimiento funciona también para aquellos sitios que están detrás de un proxy reverso como NGINX y la conexión del proxy al sitio en cuestión se realiza vía http, incluso si no puede modificar la configuración del servidor web, primero veamos algunos conceptos y definiciones:

Conceptos y definiciones

WordPress es un adminitrador de contenido desarrollado en PHP y MySql con una aquitectura basada en plugins y temas. WordPress es desarrollado y mantenido por cientos de desarrolladores alrededor del mundo.

Let’s Encrypt es una autoridad de certificación abierta, libre y automatizada, lanzada el 12 de abril de 2016, que proporciona certificados de seguridad (a nivel TLS) X.509 gratuitos. Let’s Encrypt elimina el complejo proceso de creación manual, validación, firma, instalación y renovación de los certificados seguridad.

SSL / TLS (Secure Socket Layer / Transport Layer Security): son protocolos criptográficos que permiten establecer un canal de comunicación segura en Internet: web, correo, fax y mensajería instantánea

CA (Certificate Authoritative): entidad reconocida a nivel mundial encargada de generar certificados de seguridad para terceros.

Nota: Antes de ejecutar los siguientes pasos realice una copia de seguridad de su BD, antes de ejecutar el siguiente procedimiento en un ambiente de producción ejecútelo en una versión de prueba de su sitio original, LibreByte no se responsabiliza por cualquier daño o pérdida de datos que pudiera derivarse del siguiente procedimiento.

Paso 1. Modificar wp-config

wp-config es el fichero de configuración de WordPress y el segundo fichero en cargarse después del fichero index.php por eso pondremos el siguiente código antes de cualquier código PHP.

<?php
// Check if a redirect is needed
$redirect = !isset($_SERVER['HTTPS']) || ('on' != $_SERVER['HTTPS']);
$redirect = $redirect || !isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || ('https' != $_SERVER['HTTP_X_FORWARDED_PROTO']);

// Permanent redirect to https version
if ($redirect) {
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], true, 301);
    exit();
}

La variable $_SERVER['HTTPS'] tiene un valor no vacío si la petición es de tipo HTTPS, la variable $_SERVER['HTTP_X_FORWARDED_PROTO'] toma el valor de https cuando su sitio está detrás de un proxy reverso, compruebe que valor toman esta variables (debido a que sus valores puede variar en dependencia del proxy reverso y del servidor web) creando un fichero de prueba y que esté accesible vía https y en el mismo ponga el siguiente código:

var_dump($_SERVER);

Paso 2. Actualizar la tabla prefijo_posts

Conéctese a la BD de WordPress y busque la tabla posts esta tabla debe tener un prefijo definido en la variable $table_prefix del fichero wp-config.php, una vez conectado a la BD de WordPress ejecute la siguiente consulta

UPDATE tableprefix_posts
SET 
post_content = REPLACE(post_content, 'http://www.midominio.com', 'https://www.midominio.com'),
post_excerpt = REPLACE(post_content, 'http://www.midominio.com', 'https://www.midominio.com')
WHERE post_content LIKE '%http://www.midominio.com%' OR post_excerpt LIKE '%http://www.midominio.com%'

La consulta anterior actualizará todas las referencias no segura a sus versiones seguras.

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.