Categorías: Tutoriales

Cambiar la dirección de un sitio WordPress

Es frecuente que por las razones que sean, no sólo de producción en plan: “quiero cambiar de dominio” sino por pruebas para poder echar a andar un proyecto WordPress en un servidor que no está en producción, tengamos que cambiar la dirección del mismo.

La propia arquitectura de WordPress está pensada para ser flexible en este aspecto. En este artículo, comentaremos cómo hacerlo desde el punto de vista técnico, no entraremos en cuestiones aparte como informar a los buscadores sobre el cambio de URL, básico para evitar pérdida de posicionamiento.

Transporte de datos

Lo primero que debemos hacer es asegurarnos de que el contenido PHP, JavaScript, imágenes, etc. esté accesible desde el nuevo dominio. Si cambiamos de servidor debería copiarlo usando FTP, SCP o la opción que más os guste.

Base de datos

Este es el punto más interesante. ¿Por qué? A priori, en muchos manuales leeremos que sólo hay que cambiar en la tabla de opciones, wp_options, los siguiente valores:

  • siteurl: dirección donde está instalado WordPress, suele coincidir con la de abajo
  • home: inicio del blog

Sin embargo hay detalles que se escapan: la tabla wp_post con las entradas y wp_options, van a estar llenas de referencias al dominio antiguo.

Bueno, la primera solución que se nos ocurriría, sería o montar una consulta o un script para que trate estos datos y haga una actualización del dominio antiguo al nuevo, o tirar por el camino del dump, el reemplazo masivo en el fichero SQL y la posterior importación. Sin embargo, no es tan fácil.

Las tablas en WordPress tienen un diseño que imposibilita hacer relaciones 1:N cuando no las hay. Me explico. Soy el plugin tal y quiero almacenar datos referentes a mí en un total de 10 instancias. Podría:

  • Hacer una tabla para mí y con una clave foránea referirme a la opciones de WordPress: no es posible, se sale del estándar
  • Meter tantas opciones como necesite en wp_options: no es elegante y a la hora de hacer consultas, no es la vía más fácil si mis opciones pueden crecer de forma desmesurada. Si son siempre las mismas es una buena opción.
  • Meter una sola fila en wp_options con todo usando la serialización de PHP: es la opción elegida cuando no se puede usar la anterior

Antes de entrar a hablar de la serialización en PHP os recuerdo que si cambiáis de servidor, deberéis:

  • Migrar los datos MySQL haciendo un dump y luego importándolos
  • Modificar los parámetros de wp-config.php referentes a la base de datos y referentes a: siteurl, home y situación del contenido si es que los habéis cambiado en dicho fichero

¿Qué hace la serialización en PHP?

La idea de serialize() es obtener una cadena con la información de varios valores que puede ser prácticamente cualquier cosa y tener además la herramienta contraria, unserialize(). La idea es similar a JSON pero tiene sus pros y contras (ya hablaremos otro día de ello con más tiempo).

El problema de usar serialize() es que resulta imposible hacer un reemplazo directamente, porque la cadena que genera es sensible como podéis imaginar a su tamaño y a una serie de tokens que incorpora internamente.

La solución: usar esta herramienta de David Covene llamada Search and replace for WordPress Databases. Deberemos instalarla en nuestro servidor y ejecutarla. Sólo deberemos decir sobre qué tablas queremos hacer la operación de búsqueda y reemplazo y qué cadenas queremos reemplazar (en nuestro caso serán http://dominio_antiguo por http://dominio_nuevo).

Y con esto estaría terminada la modificación de dirección o dominio de nuestro blog.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

  • Buen post! También hay que tener en cuenta el parámetro upload_path de wp_options si cambiamos de alojamiento, ya que contiene la ruta a donde se suben los archivos desde la interfaz de administración.

    • Justo por eso, para evitar tener que cambiar X parámetros y que encima algunos estén serializados hay que usar la herramienta de David Covene.

      Ya te digo que tiene hasta el visto bueno de la documentación oficial del proyecto WordPress :)

  • Porque no usar unicamente 303 redirect. es mas simple. total..la pocision no se pierde.y se puede usar feed wordpress para recuperar los post. no se yo hice eso en mi dominio anitguo 50sombras,ya que lo baneo google y lo pase a http://50sombrasdemujer.com/ y funciona. si no escriban 50 sombras de grey en google y veran que aparesco primero.

    • Lo primero, comentarte que no apareces primero, apareces en la décima posición. Ten cuidado cuando haces búsquedas en Google, hazlas con una sesión de incógnito que si no, readapta los resultados a tus preferencias personales.

      Respecto lo que me comentas del 303, puedes hacerlo, pero no dejas de estar todo el rato redirigiendo y con este método es más limpio en ese sentido, el blog "sabe" que es el nuevo sitio.

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace