Publi

¿Cómo cambié mi WordPress de dominio? Minimizando el tiempo de corte y el impacto SEO

Cambio de dominio

Hace unos meses cambié el dominio de este mismo blog. Durante el proceso tuve que pensar cómo hacer para perjudicar lo menos posible a los usuarios, para que no sufrieran un corte; y también para que el número de visitantes no cayera demasiado (sabemos que a los buscadores, agregadores y demás, no les gustan los cambios de URL). En esos días, fui tomando algunas notas que espero que os resulten útiles.

Debo aclarar que no soy ningún experto en SEO, he contado la migración desde mi experiencia, con mis problemas y mis soluciones. Tal vez no sean las mejores, pero aprendí mucho de mi experiencia y me gusta compartir estas cosas con mis lectores.

El motivo del cambio de dominio

Un cambio de dominio no es algo que deba tomarse a la ligera, sobre todo, porque seguro que tiene un impacto negativo en un blog que ya está funcionando. Era una idea que tuve desde que empecé el blog. Yo quería comprar el punto com, pero por unos meses se me adelantó otra persona. Me daba rabia que esa otra persona no hubiera subido ninguna web y no tuviera correo con ese dominio. Me he pasado varios años contactando con esa persona para poder comprar el dominio punto com, pero sin suerte.
Mientras tanto, alojé el blog en un dominio temporal, totaki.com, dominio que compré hace mucho tiempo para un proyecto con algunos amigos y que, al final casi me lo he quedado yo. Mi blog tenía una URL tal que así: http://totaki.com/poesiabinaria y durante mucho tiempo no he dejado de teclear la URL completa.
El problema viene cuando algunos agregadores, sitios para ofrecer publicidad, analizadores y otras herramientas requieren un dominio, no les vale con un directorio dentro del mismo.
La gota que colmó el vaso fue el ranking de Linuxito, es un ranking de páginas web que hablan de GNU/Linux confeccionado a partir del índice Alexa y, dicho índice, require un dominio. Así que, el segundo dominio que tenía pensado era el punto net.

Era septiembre, un mes en el que no tengo excesivas visitas. Además, 2017 fue un año malo en lo personal, por lo que escribí poco y moví poco contenido por redes sociales. Así que quise aprovechar estas circunstancias para que el impacto negativo se notara menos. Y si no entraba absolutamente nadie en la web durante dos semanas, que no fue el caso, no pasaba nada.

¿Qué cambió, qué no cambió y qué pudo haber cambiado?

El principal cambio fue, como expliqué antes, el dominio y no el servidor. Es decir, los archivos y bases de datos siguen en el mismo sitio, y no tuve que moverlos a otra máquina. Lo que no quita que esto no sea posible, ¡por supuesto! Sólo tendríamos que copiar los datos de un servidor a otro, sin mucho problema.

El problema de los cambios de URL en WordPress es que, la URL está en base de datos, en cada post, página y contenidos, además de plugins que también almacenen la URL por algún lado. Es más, muchos plugins también suelen guardar en base de datos la dirección interna en el servidor, por lo que, cualquier cambio en ésta puede hacer que la web no funcione correctamente. Si sólo fueran valores almacenados tal cual en base de datos no habría problema, podríamos hacer una consulta de reemplazo en MySQL, o podríamos descargar un dump, arreglarlo ahí y luego subir los cambios a la base de datos, pero esto no es buena idea. Una característica de WordPress, muy guarra desde mi punto de vista, es que muchas veces almacena ciertas configuraciones en objetos serializados, lo cual, si la nueva URL tiene exactamente las mismas letras que la antigua, no pasa nada, en caso contrario, hemos perdido. En el siguiente punto veremos cómo solucioné este aspecto.

Otro punto a tener en cuenta fue hacer que todas las URLs del antiguo dominio apuntaran a las nuevas URLs dentro del nuevo dominio, eso no fue demasiado problema dado que el antiguo dominio lo sigo conservando. Es un punto muy importante a tener en cuenta, si cambiáis de dominio, al menos, durante un tiempo (más o menos un año) debéis conservar el antiguo dominio.

Por último, y muy importante, en mi servidor tenía esos meses una limitación grande de recursos, por lo que no pude evitar tener un poco de tiempo offline mientras realizaba cambios en la base de datos. Dicho tiempo offline se podría haber minimizado o incluso anulado completamente si hubiera tenido unos gigas más de espacio o incluso otro servidor en el que tener temporalmente la web antigua.

Algunas recomendaciones previas

Lo principal. Es que antes de hacer nada, hagáis una copia de seguridad de ficheros y base de datos de vuestro WordPress. ¿Ya tenéis un backup de hoy? Yo prefiero tener dos, por si las moscas. Y si es posible, una de las copias, descargada en mi ordenador. Además, en muchos casos, esta copia de seguridad se puede hacer sin tener cortes en la web. ¡No hay excusa!

Lo principal es que tengáis acceso SSH al servidor. Se puede hacer sin acceso SSH, pero es mucho más costoso. Teniendo acceso SSH recomiendo la herramienta WP-CLI instalada en nuestro servidor.

Otra cosa que prefiero tener preparada es una lista de los pasos que tengo que dar para hacer la migración. Ya que esta lista la podemos hacer antes de empezarla, antes de que nuestra operación sea crítica y tengamos que darnos toda la prisa posible. Para ello, debemos asegurarnos de cómo podemos hacer, con nuestro proveedor actual, el cambio de directorios en la web. En muchos hostings hay que enviar un mensaje a soporte y puede llegar a tardar un poco más de lo normal. En otros sistemas, como mi VPS de DigitalOcean, puedes tener varias webs alojadas en el mismo servidor y gestionarlas desde la terminal, si lo prefieres, por lo que mover directorios y dar de alta nuevos dominios es muy sencillo.

En lo que respecta a los registros DNS del nuevo dominio, deberíamos configurarlos ya. Actualmente no tardan mucho, en segundos podemos tener nuestro dominio apuntando perfectamente a nuestra IP, pero en ocasiones, y dependiendo del proveedor que tengamos puede tardar un poco más. Si no queréis problemas, no utilicéis 1&1, son extremadamente lentos, los demás servicios que he probado tanto de hosting compartido o VPS no me han funcionado mal. De todas formas, no tentemos a la suerte y no dejemos que el cambio de DNS arruine nuestra migración.

Pantalla de espera

Es importante no dejar colgados a los visitantes. Muchas personas entran cada hora en la web, procedentes de Google, de redes sociales, de correos, agregadores y diversas fuentes más. Tenemos que mimarlos y nunca dejar una pantalla blanca de WordPress, o un fallo de PHP. Muchas personas abandonarán del tirón y no volverán más. Así que lo primero es preparar, aunque sea un HTML tonto, avisando del proceso de mantenimiento que estás llevando a cabo (en la antigua URL, la nueva no hay por qué tocarla todavía, nadie la tiene y nadie la conoce. Si podemos, en el mismo servidor en el que tenemos la web, podemos hacer que la URL apunte a otro directorio. En mi caso, la web estaba en el directorio /home/cloud/www/totaki.com/www/poesiabinaria . Dentro de este directorio el servidor web Apache está apuntando el dominio totaki.com al directorio /home/cloud/www/totaki.com/www así que el blog lo cambié de sitio a /home/cloud/www/totaki.com/poesiabinaria_temp, es decir, a un directorio que estaba por debajo del directorio visible por Apache. Así, mientras trabajo en los archivos de mi blog, nadie podrá entrar.

Ya que este es un caso excepcional, es recomendable que todas las páginas de la URL antigua tengan una redirección 302 a la página de mantenimiento que podría ser (http://totaki.com/poesiabinaria/mantenimiento.html). La redirección 302 hará que tanto navegadores como motores de búsqueda sepan que la dirección nueva que se está presentando es temporal. Si hacemos cualquier otro tipo de redirección corremos el riesgo de que sea muy complicado volver a hacer que se detecte algo diferente a la página de mantenimiento.

URL, y la base de datos de WordPress

Llegamos al momento más temido, el cambio de la URL en WordPress. Al final no es para tanto, porque WP-CLI nos ayuda muchísimo en esto, y sin necesidad de utilizar ningún plugin de WordPress. Tienes las instrucciones de instalación en este post. Es más, podemos utilizarlo incluso cuando WordPress está oculto en un directorio no visible para el servidor web.

En WordPress, normalmente tenemos la configuración de URL en la tabla wp_options (imaginemos que wp_ es nuestro prefijo de tablas), en una de las primeras filas encontraremos el option_name “siteurl” donde option_value tendrá como valor nuestra URL. Pero eso no es todo, puede que haya más filas dentro de wp_options que contengan nuestra URL, incluso en arrays u objetos serializados, los cuales son más difíciles de modificar. Además de esta tabla, podemos encontrar la URL en muchos otros lugares.
Para automatizar esto, podemos abrir una sesión SSH al servidor, ir al directorio de nuestro WordPress y ejecutar:

wp search-replace “totaki.com/poesiabinaria” “poesiabinaria.net”

Donde sustituimos totaki.com/poesiabinaria por poesiabinaria.net que es mi nueva URL. Si no puedes instalar WP-CLI en el servidor ni tienes acceso por SSH al mismo, puedes utilizar la herramienta Search Replace DB que son solo tres archivos y tiene un entorno web para hacer los cambios sin demasiado problema.

También debemos asegurarnos de que la URL no está presente en plugins, temas u otros contenidos que hayamos metido en la web. Es normal que con el paso de los años hayas metido algún html, algún php, hayas tocado un tema, etc. Y no es de extrañar que nos hayamos dejado la URL por algún lado. Podemos hacer una búsqueda desde terminal así:

egrep -R ‘totaki.com/poesiabinaria’

Esto nos dirá todos los archivos que contienen la URL, ya tendríamos que editar los archivos a mano. O si nos sentimos aventureros podemos hacer algo como:
find -name ‘*.php’ -type f -exec sed -i ‘s/totaki.com\/poesiabinaria/poesiabinaria.net’ {} \;

Es arriesgado, ya que vamos a tocar todos los archivos con extensión php, pero si tenéis copias de seguridad, no habrá desastres.

Tras haber hecho los cambios oportunos en base de datos y archivos de nuestra web, podemos dar de alta el nuevo dominio en el servidor. Y hacer que se sirvan las webs desde el nuevo dominio. Como es nuevo, y nadie lo tiene, podemos aprovechar para hacer ciertas pruebas en ese dominio, ver que todo está bien y no se ha roto nada.

En mi caso, tardé cerca de 30 minutos en hacer estos cambios. La base de datos es bastante grande y se tiró un rato largo. Además, aproveché para hacer una actualización de WordPress y algunos plugins que me daba reparo tocar.

Certificados SSL

Actualmente es importante que tu web tenga un certificado SSL. Ya sea de pago, con dominio verificado, o simplemente de Let’s Encrypt. Debemos configurarlo antes de que la nueva URL sea efectiva para que todo funcione bien.
Es importante que si instalas tu certificado SSL en la web, tus URLs deben empezar por HTTPS y no por HTTP (ojo cuando hagamos los cambios en base de datos).

Redirecciones en el antiguo dominio

Es importante que todas las URLs del antiguo dominio redirijan al nuevo. Es decir, todas las URLs de los posts, categorías, etc desde la antigua URL a la nueva. No sólo basta con redirigir http://totaki.com/poesiabinaria a http://poesiabinaria.net/, hay que redirigirlo todo. Para ello, en el .htaccess del antiguo dominio tengo esto:

1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /poesiabinaria
RewriteRule ^(.*)$ https://poesiabinaria.net/$1 [L,R=301]
</IfModule>

De esta forma, todo lo que entra en la URL antigua, irá redirigido a la URL nueva, eso sí, la ruta que se pida de la URL antigua (un post en particular, una categoría, una página, etc), se redirigirá igual a la URL nueva.

Estas redirecciones son ahora 301, de forma que le estamos diciendo al mundo que la redirección ahora es permanente. Los navegadores, guardarán en su caché la nueva URL directamente y se ahorrarán entrar en la URL antigua para que el servidor les diga que la dirección es otra. Los motores de búsqueda, deberían hacer lo mismo, poco a poco, todas las URLs viejas, deberían figurar en los motores con la nueva URL.

Además, ya que en totaki.com yo no tengo nada, hice que totaki.com redirigiera a poesiabinaria.net para dar un poco de fuerza SEO a la nueva web. Esto no es obligatorio, pero creo que ha tenido el efecto deseado. Gracias por la sugerencia a @StartGo_connect.

Impacto en buscadores

¡He de decirlo! No lo he notado. Las visitas se han mantenido al mismo ritmo. Es verdad que este año han bajado un poco pero el ritmo ha sido bueno y no ha habido problemas graves en ese aspecto. Es verdad que las redirecciones 301 funcionan a la hora de cambiar las URLs. Además, al mantener las direcciones antiguas, los buscadores han hecho bien el cambio. De todas formas, actualicé la dirección en la Google Search Console y las Herramientas para Webmasters de Bing. Lo primero que hice fue subir los nuevos sitemap.xml para agilizar un poco la entrada en los buscadores.

A pesar de no haber notado un impacto negativo en las visitas, en los buscadores tardaron un poco en salir las URLs nuevas. Por ejemplo, en Google tardó menos de un día (unas 20h) en mostrar los primeros resultados con las nuevas URLs, y otras 20h más tarde, Google ya listaba 50 resultados con la nueva dirección. En total, unas 47h más tarde, Google Search Console empezó a mostrar el primer reporte de datos.
Google, 2 días más tarde (cerca de 96h después de la migración) ya mostraba 300 resultados y los cerca de 1500 resultados que solía mostrar, no se hicieron esperar más de una semana.

Bing tardó un poco más, tardó cerca de 4 días en mostrar 40 resultados, y unas dos semanas en mostrarlos todos.

Alexa tardó 5 días en descubrirme, aunque todavía no me ha visto demasiado bien, pero poco a poco me irá conociendo.

Por último Adsense. Los contenidos relacionados de los posts los gestiono con ellos. Van mostrando al mismo tiempo publicidad y posts míos relacionados con el post actual. Esta opción está sólo presente cuando tienes un determinado número de visitas y, puesto que poesiabinaria.net era nuevo no tenía visitas aún. Por eso tardó casi 7 días en poder usarse. Supongo que lo que tardaría Google en darse cuenta de que el nuevo dominio también tenía visitas. No tuve que cambiar el código ni nada, de eso sí que se dio cuenta Google.

Estadísticas

Otro sistema donde hay que hacer cambios, y que puede que se nos olvide, es en tu gestor de estadísticas. Google Analytics o el que quiera que uses. En mi caso, utilizo Piwik. El cambio no es muy grande, sólo hay que cambiar la URL para que el sistema siga monitorizando bien las visitas. Es más, si no lo cambias, las visitas se siguen contabilizando, aunque puedes encontrar cosas raras en las estadísticas. Mejor tenerlo en cuenta y cambiarlo.

Redes sociales

¡Es imposible cambiar todos los enlaces que he publicado en redes sociales hacia mi antigua URL! Por eso tengo las redirecciones. En redes sociales, los posts se van quedando atrás y casi no se visitan. Aunque lo mismo alguien mira un recuerdo, un contenido compartido hace mucho tiempo y entra desde una URL vieja. Aún tengo contenidos viejos compartidos con un antiguo agregador que no funciona y de vez en cuando encuentro URLs acortadas con ese servicio, las intento cambiar, pero es horrible y a veces no se puede.

Todavía siguen entrando casi 5000 hits diarias desde la antigua URL, cifra que va bajando cada día que pasa. Vale, muchos son motores de búsqueda y sistemas automáticos.

Agregadores

Utilizo mucho los agregadores de contenidos. Y es verdad que me había olvidado de algunos, pero al intentar monitorizar todas las entradas y cambiar la URL en varios lugares, he encontrado algunas curiosidades.
Lo malo, también, de tener un blog con contenido más técnico es que no todos los agregadores me aceptan. Incluso dentro de los sitios técnicos, en algunos sitios no encaja.

El primero en mencionar será la ranking de Linuxitoblogosfera de Linuxito, quien me agregó nada más comunicárselo y me hizo mucha ilusión. Aunque no tengo mucho rango en el índice Alexa todavía.

Otra mención especial merece Bloguers. Aunque al principio no aceptaba mi nueva URL, tras contactar con el administrador me hizo el cambio sin problema y en menos de un día.

Algunos agregadores que sí han cogido bien la redirección:

Por otro lado, otro agregador que no ha detectado el cambio, ni lo ha hecho manualmente ha sido PlanetaLinux. He podido contactar con ellos, pero aún no han realizado el cambio manual.

Cosas que faltan por hacer

Por pereza, y por olvido, aún quedan sitios en los que tengo que cambiar la URL vieja por la nueva, aunque es algo que no me preocupa demasiado, ya que conservo la URL antigua también y no tengo planes de olvidarla. Lo malo de este tipo de cambios es que en muchas ocasiones son manuales, es decir, el webmaster de otra página que me enlaza tiene que cambiar manualmente la dirección en su web. Por un lado, me da cosa molestar a la gente por mi culpa, y puede que muchos se harten y no lo hagan, o me quiten el enlace, o incluso al ser un cambio manual, puede haber errores, por lo que, mejor no movilizo a nadie. Eso sí, los enlaces nuevos prefiero hacerlos a la nueva URL.

¿Una migración con 0% downtime?

Me lo he planteado. El downtime de este blog fue de media hora, y siempre digo: “¿Y si las personas que no han podido entrar en este periodo realmente lo necesitaban?”. Así que, si hubiera querido 100% de uptime durante la migración. ¿Qué habría necesitado? ¿Cuánto tiempo más habría tardado?

Lo primero hubiera sido espacio en disco disponible. Estos días andaba muy mal de espacio en el servidor, y no tenía 4Gb libres para tener una copia exacta de la web y dejarla funcionando. Habría varios escenarios posibles.

Dentro del mismo servidor

Como ha sido mi caso, la migración de la página ha sido dentro del mismo servidor. Los archivos no he tenido que tocarlos, sólo los he movido a otra carpeta (porque me gusta tener las cosas organizadas), aunque no era 100% necesario. Pero, si no hubiera querido cortes en el servicio, tendría que:

  • Establecer las DNS del nuevo dominio para que apunten al servidor.
  • Haber copiado todos los archivos de la web a otra carpeta. En la antigua carpeta se quedaría la web funcionando.
  • Desactivar los comentarios de la web. Importante, ya que los posibles cambios que pueden realizarse serían nuevos posts (y no voy a ponerme a hacer un post mientras migro la web) o comentarios. Así que para que no haya comentarios nuevos durante la migración, no me queda otra, pero será un momento.
  • Crear un dump de la base de datos, crear una nueva base de datos MySQL y restaurar el dump ahí.
  • Cambiar el nombre de la base de datos en wp-config.php. También podía crear un usuario de MySQL especial para la nueva instalación, sólo por seguridad, para evitar romper cosas si se me olvida hacer algo.
  • Trabajar con WP-CLI en la nueva carpeta.
  • Configurar el nuevo VirtualHost con la URL nueva. Entro y compruebo que todo esté bien.
  • Si nuestro nuevo dominio tiene SSL, debemos configurarlo también.
  • Cuando todo esté a mi gusto, edito el .htaccess de la antigua URL para hacer efectiva la redirección. Cuando la redirección funcione bien (debemos probar todos los casos, con barra al final, sin ella, con www, sin www, con HTTPS, sin él, probar URLs de categorías, de posts, en fin, todo lo que se nos ocurra).
  • A mí me gusta dejar los archivos de la antigua web (y la base de datos) unos días, por si las moscas, o por si tengo que hacer algún cambio rápido en algún momento (nunca se sabe).
  • Abrimos de nuevo los comentarios (¡que no se nos olvide!)
  • Los demás cambios, altas en buscadores, agregadores, directorios, etc debemos hacerlos con la web abierta al público, y ya tarda un tiempo.

En servidores diferentes

Los pasos a realizar si son servidores diferentes son parecidos a cuando es el mismo servidor. Sólo que las copias de archivos desde la antigua dirección a la nueva serán más lentas, al ser máquinas distintas. Si podemos, está muy bien utilizar rsync, ya que automáticamente comprimirá los datos para realizar la copia y todo se transmitirá mucho más rápido. Si no podemos hacerlo, estaría bien comprimir los datos en el servidor de origen, ya que, al ser tantísimos archivos, una instalación de WordPress puede tardar en copiarse un montón de tiempo aunque no ocupe tanto espacio.

Al ser dos servidores, sí que no tendremos problemas al hacer cambios en un sitio o en otro. Es decir, es algo más difícil romper algo, a no ser que nos equivoquemos de ventana al hacer los cambios

¿Sugerencias y comentarios?

¿Has migrado tu web de dominio o de servidor alguna vez? ¿Qué problemas has tenido y cómo los has solucionado? ¿Qué medidas has tomado para que no bajen las visitas? ¡Deja tu comentario debajo del post!

Foto principal: unsplash-logoJ. Kelly Brito

También podría interesarte...

There are 3 comments left Ir a comentario

  1. Pingback: ¿Cómo cambié mi WordPress de dominio? Minimizando el tiempo de corte y el impacto SEO | PlanetaLibre /

  2. GatoOscuro /
    Usando Mozilla Firefox Mozilla Firefox 58.0 en Windows Windows 7

    Bueno conocer tu experiencia para mis futuros movimientos con mi sitio u,u

    1. Gaspar Fernández / Post Author
      Usando Mozilla Firefox Mozilla Firefox 57.0 en Linux Linux

      Gracias por tu comentario. Esta guía no funcionará si estás en WordPress.com; aunque lo mismo puedes hacer una exportación de datos y seguro que te lo puedes llevar todo a tu propio servidor.

Leave a Reply