Enrique J. Ros

Cómo pasar una web en WordPress a HTTPS, paso a paso

Hasta ahora era bastante habitual tener una web en HTTP, incluso una tienda online. Los certificados SSL eran caros y no había una necesidad imperiosa de pagar por uno. Pero las cosas han cambiado: muchas empresas de hosting ofrecen ya los certificados gratuitos de Let’s Encrypt y, por otro lado, Google penaliza (en posicionamiento) las webs que no lo tengan.

Así que la tendencia ahora es justo la contraria: por defecto, la mayoría de las webs se crean ya en HTTPS. Pero claro, ¿qué pasa con todas aquellas webs que, durante años, han estado en HTTP y ahora tienen la urgente necesidad de pasar a HTTPS? Si es tu caso, no sufras: aquí te explico, paso a paso, cómo pasar una web en WordPress a HTTPS.

Por qué necesitas tener tu web en HTTPS

Lo más probable es que, si estás leyendo esto, ya sepas que necesitas tener tu web en HTTPS. Porque, efectivamente, ya no es un plus, sino una absoluta necesidad. Las webs sin SSL, las que estén en HTTP, están ya irremediablemente condenadas.

Dejando al margen las consideraciones sobre la seguridad en las transferencias de datos (que, por otro lado, es el motivo principal), a fecha de hoy hay dos grandes motivos.

Beneficios para el SEO

Hasta este año Google “veía con buenos ojos” a las webs que usaban certificado digital, pero ahora el buscador ha dado un giro radical a este planteamiento y las webs con HTTPS no serán beneficiadas, sino justo lo contrario: las webs sin certificado, en HTTP, serán penalizadas.

Y no es un planteamiento a futuro: Google ya lo está haciendo, y durante todo este año (2017) ha ido endureciendo esta política. Google quiere una web segura (estoy seguro de que todos queremos eso, pero él tiene el poder para conseguirlo) y, hoy por hoy, si tu web está en HTTP tiene debido a eso un peor posicionamiento del que le correspondería de forma natural.

Confianza del usuario

Finalmente, parece que el usuario medio está muy concienciado con la seguridad en internet, y hoy día comprar en una web sin certificado SSL se percibe como un riesgo, incluso aunque el pago se procese a través de pasarelas seguras en HTTPS.

En pocas palabras: Google quiere tu web en HTTPS y el usuario quiere tu web en HTTPS. Si tu web está en HTTP, está condenada a morir, así que has decidido (con gran acierto) ponerte manos a la obra con esto. Bien, pues empecemos.

Activar el certificado SSL

El primer paso es obtener y activar un certificado SSL. Los hay de muchos tipos, pero a no ser que seas un banco te será más que suficiente con un certificado gratuito de Let’s Encrypt, que cualquier hosting de calidad (SiteGround, Webempresa) ya incluye en sus paquetes.

Si estás en uno de estos servicios de hosting te bastará con activarlo. Si no sabes cómo hacerlo, puedes consultar este otro artículo que te guiará paso a paso por el proceso:

Si tu hosting no ofrece certificados Let’s Encrypt, te quedan dos opciones: contratar uno de pago, o cambiar de hosting. No hay más.

Habilitar HTTPS en WordPress

¿Ya has activado el certificado SSL? Perfecto, pues ahora toca decirle a WordPress que, a partir de ahora, las URLs de la web comenzarán por https y no por http.

Para ello sólo tienes que ir a los ajustes del sitio (Ajustes > Generales) y cambiar el protocolo en la URL de tu web en las dos opciones, Dirección de WordPress (URL) y Dirección del sitio (URL).

Una vez pulses en guardar tu sesión se va a cerrar, la página de ajustes recargará y de nuevo te pedirá que introduzcas usuario y contraseña… pero esta vez ya en HTTPS. Pero tranquilo, aún queda mucho camino por delante.

Crear una redirección de HTTP a HTTPS

Llegados a este punto, tu web tiene habilitado HTTPS tanto en el servidor (con el certificado SSL) como en WordPress, y si accedes a ella escribiendo https://tudominio.com/ ya se carga. Pero, ¿qué ocurre si accedes a través de HTTP como antes?

Aquí pueden ocurrir dos cosas, en función de cómo esté configurado el proceso de instalación del certificado SSL en tu hosting. Let’s Encrypt (y otros certificados) pueden, como parte del proceso de instalación, establecer las redirecciones necesarias de HTTP a HTTPS, pero eso depende de cómo esté configurado:


Al instalar el certificado por SSH te pregunta si configurar o no las redirecciones en el servidor web

Como ves en la imagen de arriba, al instalar el certificado accediendo vía SSH (ventajas de tener un servidor propio) te pregunta si quieres o no que el script configure el servidor para realizar las redirecciones oportunas. Con elegir el 2 (Redirect) está todo hecho.

Pero en tu caso eso está configurado por el hosting, y dependiendo de cómo lo hayan hecho (cada una de las opciones tiene sus ventajas e inconvenientes) quizá tengas que crear las redirecciones tú mismo.

¿Qué ocurre si vas a http://tudominio.com/? ¿Te redirige a la versión en HTTPS, o se queda en la versión HTTP? Si hay una redirección, enhorabuena, ya puedes pasar al siguiente punto.

Pero si no hay una redirección tendrás que configurarla tú, y este punto es crucial porque, de no hacerlo, Google va a ver tu web duplicada, una vez en HTTP y otra en HTTPS. Y ya sabes lo mal que se lleva Google con el contenido duplicado.

Para eso tendrás que acceder por FTP o a través del gestor de archivos de tu hosting y editar el archivo .htaccess. Como siempre, recuerda hacer primero una copia de seguridad. Basta con descargarlo a tu ordenador o duplicarlo como .htaccess.orig, por ejemplo.

Así que tendrás que abrirlo y, antes de la línea que dice #BEGIN WordPress, añadir lo siguiente:

#BEGIN SSL
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
#END SSL

En realidad lo importante son las tres líneas centrales, las que comienzan por # no son más que comentarios, pero déjalos. Quizá más adelante tú u otra persona necesitéis editar este archivo y siempre es mejor saber qué es cada cosa y dónde empieza y dónde termina cada directiva.

Actualizar los enlaces en la base de datos

Y vamos avanzando pasos: en estos momentos tu web está funcionando en HTTPS, y si alguien intenta acceder a la versión en HTTP será automáticamente redirigido a la versión que utiliza SSL.

Pero hay un inconveniente. A partir de ahora WordPress sabe que la web está en HTTPS, y cualquier imagen, enlace o formulario que inserte estará en HTTPS, pero hasta ahora no era así: tu base de datos contiene cientos o miles de referencias internas a la versión HTTP.

Podrías pensar que eso no es un problema, ya que al fin y al cabo las redirecciones se ocuparán de ello de forma automática, pero en realidad sí lo es, por dos motivos:

Cambiando todas las referencias de la web de HTTP a HTTPS

Así que tenemos que cambiar todas esas referencias a nuestro dominio bajo HTTP por referencias en HTTPS. Pero claro, no podemos ir buscando una a una estas referencias para editarlas: pueden ser, en el mejor de los casos, cientos. Si la web tiene más de unos meses serán miles o decenas de miles.

Afortunadamente no es necesario hacerlo a mano: actuando directamente sobre la base de datos podemos utilizar las funciones de búsqueda y sustitución para cambiar todas esas referencias a http://tudominio.com/ por referencias a https://tudominio.com/.

Pero antes, claro está, el disclaimer de rigor: nunca operes sobre la base de datos sin hacer primero una copia de seguridad. Da igual que sepas exactamente lo que tienes que hacer, o que estés siguiendo indicaciones guiadas paso a paso como las de este artículo: siempre puede haber errores o imprevistos, y dañar la base de datos puede significar perder toda tu web.

No es necesario que realices tú mismo estas operaciones sobre la base de datos, ya que existe un plugin gratuito que te facilitará la tarea, permitiéndote realizar esta operación de forma muy sencilla e intuitiva: Better Search Replace.

Y, en lugar de explicarte como se hace, mejor lo ves tú “en vivo” en este vídeo:

Encontrar y resolver los problemas de contenido mixto

Y esta es la parte más frustrante de todas, porque puede que llegados a este punto nuestra web aún no muestre el ansiado candado verde con el cartelito de Es seguro, y en lugar de eso muestre un mensaje informando de que Tu conexión con este sitio web no es completamente segura.

Pero, ¿qué narices está pasando aquí? Hemos instalado un certificado SSL en el servidor, habilitado el HTTPS en WordPress, creado las redirecciones necesarias y sustituido todas las referencias de la base de datos que apuntaban a la web en HTTP, para que apunten a la versión en HTTPS. ¿Qué falta ahora?

Bueno, pues pueden ser muchas cosas. Por mi experiencia sé que la mayoría de las veces ocurre una de estas dos cosas:

El problema con los formularios es que, aunque no pertenezcan a tu dominio, implican transferencia de datos, así que tu web nunca podrá ser considerada segura si valida datos contra formularios en HTTP, da igual que esos formularios no dependan de ti.

En cualquier caso, puede haber muchas otras causas que estén generando problemas de contenido mixto. Puedes localizarlos haciendo uso de una herramienta externa, como Why No Padlock? o, mejor aún, utilizar la consola de desarrolladores del navegador, que con seguridad te estará informando de los detalles del problema.

Configurar Google Search Console

Una vez localizados y corregidos esos problemas de contenido mixto tu web muestra, por fin, el codiciado candadito verde en la barra de direcciones. Por fin has migrado tu web con éxito a HTTPS.

Pero eso no significa que hayas terminado el trabajo. Aún tienes bastante cosas por hacer fuera de tu web, pero sin duda la principal es decirle a Google que, a partir de ahora, tu web está en HTTPS.

Es cierto, aunque no se lo digas él lo averiguará por sí mismo en su próxima visita: por algo has hecho las redirecciones de HTTP a HTTPS. Pero no me refiero a eso: Google quiere que todas las versiones de una web estén dadas de alta en Google Search Console (estén o no en uso).

Así que hay que hacerlo: deberás dar de alta dos nuevas propiedades en Google Search Console para tu dominio, las dos en HTTPS (con y sin www). Después de eso recuerda indicarle cuál es la versión preferida (si no lo hiciste ya cuando agregaste las propiedades en HTTP).

A partir de ese momento para cualquier actividad o configuración que realices en Google Search Console tendrás que utilizar la nueva propiedad por defecto.

Otras cosas de las que no te puedes olvidar

Ah, sí, claro que quedan cosas: actualizar la propiedad en Google Analytics y en AdWords. Y cuanto antes, ya que esto incluso puede influir (a tu favor) en los precios que pagas por la publicidad en AdWords.

Redes sociales, publicidad en webs de terceros, acciones off-line… Todas esas URLs hay que actualizarlas, pero ahora, ya sí, no urge: lo importante está hecho, y con el tiempo seguro que vas viendo enlaces que irás actualizando. Y si no tienes posibilidad de cambiar alguno de ellos, no te preocupes: para eso (ahora sí) están las redirecciones.

Y si no te ves capaz

Sí, sé que puede resultar abrumador: .htaccess, base de datos, problemas de contenido mixto, Google Search Console… No sólo es mucho trabajo, sino que además requiere de ciertos conocimientos técnicos y, sobre todo, experiencia.

Porque, al fin y al cabo, cualquiera con un poco de paciencia y siguiendo una guía paso a paso como esta puede, en más o menos tiempo, hacerlo. La cuestión es saber responder de forma efectiva ante imprevistos (que, por cierto, surgen el 90% de las veces).

Si crees que todo esto no es para ti, no te ves capaz, te provoca cierto respecto tocar todas estas cosas por “si te cargas” algo, o simplemente no tienes tiempo para ponerte a aprender y a hacerlo tú mismo, lo tienes muy fácil: sólo tienes que contactar conmigo. 🙂

Salir de la versión móvil