Introducción al Problema de URL Rewrites en Magento 2
Uno de los dolores de cabeza más frecuentes para los administradores de tiendas online en Adobe Commerce (Magento 2) es la aparición de excepciones relacionadas con las URLs reescritas (URL Rewrites). Este fallo suele bloquear el acceso al panel de administración o generar errores fatales en el frontend cuando el sistema intenta duplicar una ruta de URL que ya existe en la tabla url_rewrite de la base de datos.
Causas Principales de la Excepción de URL Rewrites
El error de reescritura de URLs en Magento 2 suele originarse por diversos motivos comunes durante la gestión diaria del catálogo:
- Importaciones masivas de productos o categorías mediante archivos CSV que contienen URLs repetidas.
- Eliminación incorrecta de productos que dejan registros huérfanos en la base de datos.
- Conflictos de concurrencia al regenerar URL rewrites mediante comandos de consola.
- Modificaciones manuales directas en la base de datos sin respetar las restricciones de unicidad.
Método 1: Solución mediante Línea de Comandos y Limpieza de Caché
La forma más rápida de mitigar este problema si es un conflicto menor es limpiar las tablas afectadas y regenerar las URL mediante la interfaz de comandos (CLI) de Magento.
- Accede a tu servidor mediante SSH con un usuario con permisos adecuados.
- Navega hasta la raíz de tu instalación de Magento:
cd /var/www/html/tu-tienda-magento - Limpia la caché actual ejecutando:
bin/magento cache:clean - Elimina los registros duplicados o regenera las rutas ejecutando el reindexador:
bin/magento indexer:reindex url_rewrite
Método 2: Limpieza Manual y Corrección de Duplicados en la Base de Datos
Si el comando anterior arroja un error de clave duplicada (Duplicate entry), deberás limpiar la tabla directamente desde tu gestor de base de datos (como phpMyAdmin o consola MySQL).
- Haz una copia de seguridad completa de la base de datos de tu Magento 2 antes de realizar cualquier cambio.
- Accede a tu base de datos y localiza la tabla
url_rewrite. - Identifica las entradas duplicadas ejecutando la siguiente consulta SQL de diagnóstico:
SELECT request_path, COUNT(*) c FROM url_rewrite GROUP BY request_path HAVING c > 1; - Elimina los registros conflictivos o antiguos que bloquean la unicidad utilizando una sentencia DELETE segura basada en el
url_rewrite_idredundante. - Vuelve a la terminal SSH y ejecuta la compilación e indexación final:
bin/magento setup:upgrade && bin/magento setup:di:compile