Buscar y reemplazar URLs en la base de datos

sql marzo 11, 2026

Al migrar un sitio WordPress a un nuevo dominio o de HTTP a HTTPS, las URLs antiguas quedan almacenadas en múltiples tablas de la base de datos. Estas queries las actualizan de forma manual y quirúrgica.

Casos de uso: migración de HTTP a HTTPS, cambio de dominio, mover de un subdominio al dominio raíz, migrar de entorno local a producción.

-- IMPORTANTE: Hacer backup antes de ejecutar.
-- Para datos serializados usa WP-CLI en su lugar:
-- wp search-replace 'http://viejo.com' 'https://nuevo.com' --all-tables

-- 1. Contenido de los posts
UPDATE wp_posts
SET post_content = REPLACE(post_content,
    'http://viejo.com',
    'https://nuevo.com'
);

-- 2. GUIDs de los posts
UPDATE wp_posts
SET guid = REPLACE(guid,
    'http://viejo.com',
    'https://nuevo.com'
);

-- 3. Metadatos de posts
UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value,
    'http://viejo.com',
    'https://nuevo.com'
)
WHERE meta_value LIKE '%http://viejo.com%';

-- 4. Opciones del sitio (siteurl, home, etc.)
UPDATE wp_options
SET option_value = REPLACE(option_value,
    'http://viejo.com',
    'https://nuevo.com'
)
WHERE option_value LIKE '%http://viejo.com%';
  • REPLACE() — Función SQL que sustituye todas las ocurrencias de una cadena dentro de un campo de texto.
  • WHERE meta_value LIKE ‘%…’ — Filtra solo las filas que contienen la URL antigua para evitar actualizaciones innecesarias y acelerar la query.
  • Datos serializados — Las queries SQL no gestionan datos PHP serializados (usados por plugins como ACF). Para esos casos usar siempre wp search-replace de WP-CLI.
  • Orden importante — Actualizar primero wp_options para que siteurl y home apunten al nuevo dominio antes de que WordPress intente cargar nada.