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?
- 2. Orígenes comunes de los errores 404
- 3. Tablas y fuentes de datos donde rastrear URLs rotas
- 4. Consultas SQL útiles para localizar URLs inexistentes
- 5. Crear un dashboard en PHP para visualizar los errores
- 6. Automatizar limpieza, redirecciones o reportes
- 7. Conclusión
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
| Origen | Ejemplo | Solución típica | 
|---|---|---|
| Migraciones mal hechas | Enlaces antiguos sin redirección | Redirecciones 301 o limpiar referencias | 
| Contenido eliminado | Páginas borradas sin control | Redireccionar o devolver 410 | 
| Enlaces internos rotos | Menús, widgets o botones con URL antigua | Actualizar enlaces o regenerar menús | 
| Errores en el sitemap | Sitemap incluye páginas ya eliminadas | Regenerar 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.

