Introducción

Las URLs rotas o errores 404 son uno de los mayores enemigos del SEO técnico y de la experiencia de usuario. Si tu sitio WordPress o eCommerce genera enlaces que terminan en páginas no encontradas, estás perdiendo posicionamiento, visitas y conversiones.

En este artículo te enseño cómo detectar estas URLs rotas directamente desde la base de datos (sin depender únicamente de plugins) y cómo construir un dashboard en PHP para monitorizarlas y gestionarlas tú mismo.

Índice

1. ¿Por qué es importante detectar URLs rotas?

Las páginas 404 afectan a:

  • 🚫 El SEO: Google penaliza sitios con enlaces rotos internos o externos.
  • 🧭 La navegación del usuario: genera frustración y pérdida de confianza.
  • 📉 Las conversiones: especialmente si enlaces rotos apuntan a productos o páginas de venta.

2. Orígenes comunes de los errores 404

OrigenEjemploSolución típica
Migraciones mal hechasEnlaces antiguos sin redirecciónRedirecciones 301 o limpiar referencias
Contenido eliminadoPáginas borradas sin controlRedireccionar o devolver 410
Enlaces internos rotosMenús, widgets o botones con URL antiguaActualizar enlaces o regenerar menús
Errores en el sitemapSitemap incluye páginas ya eliminadasRegenerar sitemap

3. Tablas y fuentes de datos donde rastrear URLs rotas

  • wp_posts: para revisar URLs antiguas o inconsistentes
  • wp_postmeta: para campos personalizados que contienen enlaces
  • wp_options: donde suelen almacenarse menús o widgets
  • Logs de servidor (access_log / error_log): fuente ideal de errores 404 reales
  • Herramientas externas: como Screaming Frog, Google Search Console, Ahrefs, etc.

4. Consultas SQL útiles para localizar URLs inexistentes

Detectar enlaces internos rotos en campos personalizados:

SELECT post_id, meta_key, meta_value
FROM wp_postmeta
WHERE meta_value LIKE '%http%'
  AND meta_value LIKE '%tudominio.com%'
  AND NOT EXISTS (
    SELECT 1 FROM wp_posts WHERE guid = wp_postmeta.meta_value
);

💡 Esto detecta campos donde se guarda una URL pero ya no hay contenido en ese enlace.

Buscar URLs antiguas que ya no están en el contenido activo:

SELECT ID, post_title, post_content
FROM wp_posts
WHERE post_content LIKE '%/categoria-antigua/%'
  AND post_status = 'publish';

5. Crear un dashboard en PHP para visualizar los errores

Puedes crear un panel sencillo que lea errores desde tu log de servidor y los muestre en pantalla.

<?php
$log = file('/var/log/apache2/access.log'); // Cambia la ruta según tu sistema
$errores = [];

foreach ($log as $line) {
    if (strpos($line, '404') !== false) {
        preg_match('/GET (.*?) HTTP/', $line, $matches);
        if (!empty($matches[1])) {
            $url = $matches[1];
            $errores[$url] = ($errores[$url] ?? 0) + 1;
        }
    }
}

arsort($errores);
echo "<h3>Errores 404 detectados:</h3><ul>";
foreach ($errores as $url => $count) {
    echo "<li><strong>$count veces:</strong> $url</li>";
}
echo "</ul>";
?>

💡 Puedes añadir filtros por fecha, excluir bots o integrar exportación CSV.

6. Automatizar limpieza, redirecciones o reportes

  • Genera automáticamente redirecciones 301 para URLs rotas frecuentes
  • Guarda en base de datos los errores detectados y genera informes periódicos
  • Usa `wp_safe_redirect()` o `.htaccess` para redireccionar desde PHP
  • Conecta Google Sheets o tu CRM para registrar los errores más críticos

7. Conclusión

Controlar los errores 404 y las URLs rotas es una parte fundamental del mantenimiento SEO de cualquier web profesional. Con SQL y un poco de PHP puedes hacer tu propio sistema de monitorización.

¿Quieres que te preparemos un dashboard a medida o revisar los logs de tu sitio?

 

📩 Escríbenos y lo hacemos contigo.

Ir al contenido