Introducción

Cuando haces una migración, restructuración o limpieza de URLs en WordPress, es imprescindible crear redirecciones 301 para no perder tráfico ni posicionamiento SEO.

Hacerlas una a una desde plugins puede ser lento e ineficiente. En esta guía aprenderás a crear redirecciones 301 masivas directamente desde la base de datos, sin depender de plugins externos y con control total desde código o MySQL.

Índice

1. ¿Cuándo aplicar redirecciones 301?

  • 🔁 Has cambiado la estructura de URLs (categorías, slugs, idiomas)
  • 📦 Has migrado contenido desde otro CMS
  • 🧹 Estás eliminando páginas antiguas pero quieres preservar tráfico
  • 🧠 Google Search Console detecta errores 404 recurrentes

2. Opciones comunes para hacer redirecciones

MétodoVentajasDesventajas
Plugins como RedirectionInterfaz sencillaPuede ralentizar grandes sitios
.htaccess / nginxRendimiento excelenteNo editable desde WordPress
Función PHP + tabla propiaFlexible, escalable, seguroRequiere conocimientos técnicos

3. Crear una tabla personalizada para redirecciones

CREATE TABLE wp_redirecciones_301 (
  id INT AUTO_INCREMENT PRIMARY KEY,
  origen VARCHAR(255) NOT NULL,
  destino VARCHAR(255) NOT NULL,
  activo TINYINT DEFAULT 1
);

💡 Puedes añadir campos como tipo (301, 302), fecha, notas, etc.

4. Importar redirecciones desde un CSV

Ejemplo básico de contenido del CSV:

origendestino
/blog/entrada-antigua/nueva-url
/producto-x/productos/actualizados/producto-x

Insertar en la base de datos:

LOAD DATA INFILE '/ruta/redirecciones.csv'
INTO TABLE wp_redirecciones_301
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@origen, @destino)
SET origen = TRIM(@origen), destino = TRIM(@destino);

5. Código PHP para aplicar redirecciones

add_action('template_redirect', function () {
    global $wpdb;
    $uri = esc_url_raw($_SERVER['REQUEST_URI']);
    $redir = $wpdb->get_row($wpdb->prepare(
        "SELECT destino FROM wp_redirecciones_301 WHERE origen = %s AND activo = 1",
        $uri
    ));
    if ($redir) {
        wp_redirect(home_url($redir->destino), 301);
        exit;
    }
});

🧠 Este código revisa si la URL actual existe en la tabla y, si está activa, lanza un 301 hacia la nueva.

6. Alternativa: usar .htaccess o nginx

Para miles de redirecciones o tráfico muy alto:

Redirect 301 /pagina-antigua /pagina-nueva

💡 Si usas nginx:

rewrite ^/antigua-url$ /nueva-url permanent;

📋 Puedes generar estas líneas automáticamente desde un exportador PHP.

7. Conclusión

Las redirecciones 301 son una herramienta esencial para preservar tráfico, mantener el SEO y mejorar la experiencia de usuario.

Con una tabla propia y un script PHP puedes gestionarlas de forma masiva y profesional, sin depender de plugins pesados.

📩 ¿Te gustaría tener esto automatizado o integrado con Google Sheets? Escríbenos y lo preparamos a medida.

Ir al contenido