Cómo cambiar de dominio en WordPress sin perder posicionamiento

Cómo cambiar de dominio en Wordpress sin perder posicionamiento

Esta semana nos hemos encontrado con un caso en el que había que cambiar de dominio en una web en WordPress. Lógicamente no queríamos perder el posicionamiento ganado estos meses de trabajo previo pero era necesario el cambio del dominio por temas de marca.

Nos pusimos a trabajar y finalmente conseguimos cambiar de dominio WordPress sin muchos problemas. Por si os encontráis con este contratiempo este artículo espero que os sea de utilidad. Os aviso que será un tutorial de nivel técnico medio – alto pero como siempre, si tenéis alguna duda podéis dejar vuestros comentarios para poder ir resolviéndolos.

¿Qué vamos a aprender?

  1. Cómo migrar WordPress de un dominio a otro
  2. Cómo modificar la base de datos para no tener conflictos
  3. Cómo hacer el redireccionamiento 301 completo en el .htaccess

Cómo migrar WordPress de un dominio a otro

Lo primero que tenemos que hacer es bajar todo el contenido del dominio antiguo a nuestro ordenador. Entramos por FTP y lo descargamos a una carpeta que se puede llamar “web antigua”. A continuación vamos a phpmyadmin de nuestra base de datos y también la descargamos. Esto lo podemos hacer desde la pestaña Exportar, pulsando en Continuar.

1

Ya con la web replicada en local nos vamos hasta nuestro servidor y creamos una partición para el nuevo dominio. Entramos a FTP y subimos todos los archivos que teníamos en el escritorio. Nos vamos ahora a nuestro cpanel (o al programa de administración que tengamos en nuestro servidor) y creamos una nueva base de datos. Creamos también un nuevo usuario y lo apuntamos, junto con su contraseña. Entramos por phpmyadmin a esta base de datos y subimos, tal cual, la base de datos que nos descargamos anteriormente. Para ello vamos a la pestaña Importar y la seleccionamos.

2

Hecho esto ya solo nos quedaría editar el archivo wp-config.php. Este archivo lo encontraréis en los archivos que habéis subido al nuevo servidor. Si lo abrimos con un editor de texto o cualquier otro editor más profesional como Sublime Text, lo podremos editar para añadirle los nuevos datos de la base de datos, nombre de usuario y contraseña.

3

Lo subimos al servidor y sustituimos por el que había antes.

Cómo modificar la base de datos para no tener conflictos

He leído en muchas webs que con lo hecho anteriormente era suficiente. Por desgracia no y para solucionarlo y no tener conflictos tenemos que volver al phpmyadmin de nuestra nueva base de datos (la del nuevo dominio) y hacer una serie de cambios.

4

Seleccionamos wp_options, nos vamos a SQL y generamos la siguiente consulta:

UPDATE wp_options
SET option_value = REPLACE(option_value,‘dominio_viejo’,‘dominio_nuevo’);

Igual para wp_posts pero esta vez dos veces:

UPDATE wp_posts
SET post_content =REPLACE(post_content,‘dominio_viejo’,‘dominio_nuevo’);

UPDATE wp_posts
SET guid = REPLACE(guid,‘dominio_viejo’,‘dominio_nuevo’);

Y por último para wp_postmeta:

UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value,‘dominio_viejo’,‘dominio_nuevo’);

Cómo hacer el redireccionamiento 301 completo en el .htaccess

Terminamos ya este pequeño tutorial cambiando el .htaccess de nuestro antiguo dominio para hacer un redireccionamiento 301. De esta forma no se pierde el trabajo SEO realizado previamente.

Para mover todo el dominio completo, tal como dice Luismvillanueva en su blog, hay que añadir la siguiente línea en el .htacccess. Recordar, del dominio antiguo:

RedirectMatch 301 ^(.*)$ http://nuevodominio.com/

Actualización: Nos comenta Lucas García con gran acierto que si este método da problemas y no se migran algunas opciones del tema, campos personalizados, etc. Es mejor utilizar el plugin wp-migrate-db para pasar la base de datos.

Juan Uceda

Co-fundador de Communityme. A veces Project Manager, a veces Marketing Online, a veces SEO, a veces CTO... pero siempre emprendedor. Me puedes encontrar en Google+. Si lo prefieres podemos hablar en Twitter.

18 comentarios

  1. Luis M. Villanueva   •  

    Hola Juan! Muchísimas gracias por mencionar mi guía en este artículo.
    En lo que respecta al artículo me ha gustado las 2 últimas partes, Especialmente el apartado de los conflictos. Por último comentar que, aunque parezca una tontería, lo de copiar la web en local cuando quieres hacer migraciones, cambios o actualizaciones es fundamental. A mi me ha salvado ya mas de 1 vez este tipo de copias.

    Un abrazo y nos vemos pronto 🙂

    • Juan Uceda   •     Author

      Hola Luisma! Gracias por tu comentario. La verdad es que las copias de seguridad son fundamentales y solo te acuerdas de ella cuando pasa algo y no la tienes 😀

      Un abrazo!

    • Javi Pastor   •  

      Yo no copié la web en local una vez en una migración y me pegué más horas arreglando la web en el nuevo hosting que creándola, madre mía. Desde luego eso hay que hacerlo siempre 😀

      Un saludo!

  2. Jesus   •  

    que pasa si la denominación de las nuevas páginas no coincide con las antiguas. En concreto de una que tengas muy bien posicionada.

    • Juan Uceda   •     Author

      Hola Jesús,

      Yo lo que haría sería hacer un 301 uno individual de las que no coinciden. Con SEO by yoast lo puedes hacer muy fácil pulsando en la pestaña Avanzado.

      Un saludo!

      • Jesus   •  

        Gracias Juan

        El problema es que las url bien posicionados son consultas php, del tipo dominio.com/índex.php?itemid=71. Al ser consultas y no urls propiamente dichas, el 301 redirect no funciona.

  3. Juan Fco   •  

    Hola,

    Yo estoy pensando crear una web desde 0. Tengo mi web en wordpress con un posicionamiento decente y tengo miedo a perderlo.
    El informático que me tiene que hacer la migración no sabe exactamente como funciona el tema del posicionamiento. Va a crear la nueva web con Symponi. ¿Tenéis experiencia en ello?. ¿Se hace también con un redireccionamiento?.

    Un saludo.

  4. carly   •  

    Tuve problemas de sintaxis copiando y pegando tu código, aquí lo dejo corregido.

    > UPDATE wp_options
    SET option_value = REPLACE(option_value, ‘dominio1.com’, ‘dominio2.com’);

    UPDATE wp_posts
    SET post_content = REPLACE(post_content, ‘dominio1.com’, ‘dominio2.com’);

    UPDATE wp_posts
    SET guid = REPLACE(guid, ‘dominio1.com’, ‘dominio2.com’);

    UPDATE wp_postmeta
    SET meta_value = REPLACE(meta_value, ‘dominio1.com’, ‘dominio2.com’);

    Muchas gracias por el tuto.

  5. Fabricio   •  

    Simplemente descarguen el plugin de duplicator, y listo se ahorraran varios procesos.

  6. Borja Giron   •  

    Hola, la regla para el htaccess no es correcta ya que se pierde todo el posicionamiento de las páginas y artículos. Saludos

  7. Pablo López   •  

    Hola

    Para hacer el cambio de dominio en base de datos lo recomendable es utilizar un plugin o un script de migración como el siguiente: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

    Este script es el que se recomienda desde el propio codex de WordPress. El motivo es porque hay ciertos plugins que serializan la información, o que tienen sus propias tablas. Este script recorre toda la base de datos incluyendo cualquier tabla creada por algún plugin, y si encuentra el dominio viejo serializado en algún campo, establece el nuevo serializado también, y de este modo no se pierde información

  8. franco   •  

    Hola, yo lo he realizado de una manera mas sencilla, creo funciona igual de bien.
    1- Agrego a mi hosting el nuevo dominio y como carpeta de instalacion pongo la ruta de donde estaba el anterior dominio.
    2- Luego desde wordpress en settings cambias el dominio por el nuevo.
    3- Por ultimo desde el cpanel o modificando el htaccess haces la redireccion 301.
    No hay que modificar base de datos ni saber nada tecnico.
    Espero que les sirva:)

  9. Victor   •  

    Hola, he hecho varias migraciones utilizando esta guía y siempre me ha funcionado perfecto, con un poco de maña no tiene mucha complicación.

    Ahora, solo me ha surgido un problemilla en un par de sitios y está relacionado con Custom Post Types, ya que no me deja borrar o modificar los CPT creados en la instalación previa, una vez migrada puedo crear nuevos CPT y editarlos/borrarlos, pero los que ya estaban no, los tengo que eliminar por phpMyAdmin.

    ¿Se os ocurre alguna causa/solucion?

  10. Gerardo   •  

    Hola Juan, muchas gracias por el tutorial,estoy por migrar unos de mis blogs a un nuevo dominio, y tu información me ha caído como anillo al dedo, solo tengo una pregunta, si no es mucha molestia.

    Yo lo que haré sera remplazar las urls antiguas por la nuevas con el notepad++ entonces, si yo hago esto puedo obviar la parte del UPDATE wp_options que se hace en el phpmyadmin?,o aun si es necesario realizarlo?
    Gracias de antemano por tu respuesta, saludos

  11. Javi   •  

    He seguido la guía. Gracias. Como ayuda para otros:

    -Descargué la base de datos directamente y he perdido algunas modificaciones, haced caso al apunte de usar algún plugin.Visto después, instrucciones sobre el que recomienda la guía no estaría de más.

    -Si al intentar acceder al admin de wordpress os da error Warning y se refiere a la linea 1 de wp-config y no tenéis espacios (solución milrepetida en los foros), descargad el wp-config, abridlo con notepad++ y en codificación quitadle el BOM. Subidlo de nuevo reemplazando.

    – En el redirect 301 que pone la guía falta $1 al final de la url nueva para que se redirija cada página. Sin esto, todo irá a la principal.

  12. Raul matos   •  

    Hola Juan muchas gracias por el post me fue de mucha utilidad.

    Seria bueno + un video, saludos desde Peru :).

  13. Pingback: Cómo cambiar de dominio wordpress sin perder posicionamiento y sin cambiar de hosting - DDigitales

  14. Gustavo Diaz   •  

    Excelente articulo, justo lo que buscaba amigo, mil gracias, la verdad no me dio ningún problema utilizar tu método, sin plugins ni nada de eso, todo muy bien explicado de manera sencilla. Pude migrar mi web al dominio http://ganadineroconinternet.net sin problemas.

    Saludos…

Deja un comentario

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