Link checker
Verifica periódicamente los enlaces rotos en el contenido extrayendo hipervínculos y evaluando códigos de respuesta HTTP, mostrando los resultados en Administración > Informes > Enlaces rotos.
linkchecker
Install
composer require 'drupal/linkchecker:^2.1'
composer require 'drupal/linkchecker:^2.0'
Overview
El módulo Link checker proporciona detección y gestión integral de enlaces rotos para sitios Drupal. Extrae enlaces de los campos de contenido configurados cuando se guardan las entidades y verifica periódicamente estos enlaces enviando solicitudes HTTP a servidores remotos y evaluando los códigos de respuesta.
El módulo soporta la extracción de varios elementos HTML incluyendo hipervínculos, imágenes, audio, video, iframes y contenido incrustado. Puede reparar automáticamente enlaces movidos permanentemente (redirecciones 301) y despublicar contenido que contiene enlaces rotos (errores 404) después de un umbral configurable de verificaciones fallidas.
Todos los enlaces rotos se muestran en un informe centralizado accesible en Administración > Informes > Enlaces rotos, donde los administradores pueden revisar el estado de los enlaces, mensajes de error, conteos de fallos y contenido relacionado. El módulo se integra con el sistema cron de Drupal para procesamiento en segundo plano y proporciona comandos Drush para operaciones desde línea de comandos.
Features
- Extrae enlaces de campos de texto, campos de enlace y varias etiquetas HTML (a, area, audio, video, img, iframe, embed, object) cuando se guarda el contenido
- Verifica periódicamente el estado de los enlaces usando solicitudes HTTP HEAD/GET con intervalos configurables (1-90 días)
- Soporta conexiones HTTP concurrentes (2-128 simultáneas) con límites por dominio para prevenir sobrecarga del servidor
- Proporciona una vista de informe de enlaces rotos accesible en /admin/reports/broken-links con filtrado y paginación
- Repara automáticamente enlaces redirigidos 301 actualizando las URL en el contenido después de un umbral configurable de fallos
- Despublica automáticamente el contenido que contiene enlaces rotos 404 después de un umbral configurable de fallos
- Encabezado User-Agent configurable para solicitudes HTTP para manejar sitios que bloquean el agente de usuario predeterminado de Drupal
- Configuración a nivel de campo permitiendo escaneo selectivo por campo de tipo de contenido
- Soporta verificación de enlaces tanto internos como externos con filtrado configurable por tipo de URL
- Despacha eventos para personalizar encabezados de solicitudes HTTP durante la verificación de enlaces
- Proporciona comandos Drush para analizar contenido y verificar enlaces vía línea de comandos
- Rastrea el historial de verificación de enlaces con conteos de fallos, marcas de tiempo de última verificación y mensajes de error
- Soporta migración de configuraciones desde Drupal 6/7 a la versión actual
- Lista negra de URL para excluir dominios específicos de la verificación (ej., dominios reservados example.com)
Use Cases
Auditoría de calidad del contenido
Ejecute auditorías periódicas del contenido de su sitio para identificar enlaces externos rotos que pueden haberse vuelto inaccesibles. Configure el módulo para escanear todos los campos de texto y campos de enlace, establezca un intervalo de verificación apropiado (por ejemplo, semanal) y revise regularmente el informe de enlaces rotos para mantener la calidad del contenido.
Reparación automática de enlaces
Habilite la reparación automática de enlaces movidos permanentemente configurando 'Update permanently moved links' en 'After three failed checks'. Esto asegura que cuando los sitios externos proporcionan redirecciones 301 adecuadas, su contenido se actualiza automáticamente para usar las nuevas URLs sin intervención manual.
Despublicación de contenido para control de calidad
Configure la despublicación automática para contenido con enlaces rotos persistentes estableciendo 'Unpublish content on file not found error' en un umbral como 'After three file not found errors'. Esto evita que los usuarios vean contenido con enlaces muertos mientras usted revisa y corrige los problemas.
Verificación de enlaces de imágenes y medios
Habilite la extracción desde etiquetas <img>, <audio> y <video> para verificar que los archivos multimedia incrustados sigan siendo accesibles. Esto es particularmente útil para sitios con contenido generado por usuarios o contenido importado desde fuentes externas.
Mantenimiento SEO
Use el informe de enlaces rotos para identificar y corregir enlaces muertos que impactan negativamente el SEO. Los motores de búsqueda penalizan los sitios con muchos enlaces rotos, por lo que el monitoreo regular ayuda a mantener las clasificaciones de búsqueda.
Validación de migración
Después de migrar contenido desde otro sistema, use 'Clear link data and analyze content for links' para extraer todos los enlaces y ejecute 'drush linkchecker:check' para verificar inmediatamente que todos los enlaces migrados sean funcionales.
Tips
- Comience con una configuración conservadora: habilite solo la extracción de etiquetas <a> inicialmente y expanda según sea necesario
- Use 'After three failed checks' para la reparación automática y despublicación automática para evitar actuar sobre interrupciones temporales
- Los límites de conexión por dominio están configurados en 2 por defecto para evitar sobrecargar servidores externos
- Los dominios de documentación reservados (example.com, example.net, example.org) siempre se preservan en la lista negra de URLs según RFC 2606
- Habilite nuevas revisiones en la configuración del tipo de contenido antes de habilitar la reparación automática para mantener el historial de ediciones
- Ejecute 'drush linkchecker:analyze' después de actualizar el módulo para asegurar que todos los enlaces estén correctamente indexados
- Para sitios grandes, considere ejecutar verificaciones de enlaces mediante Drush cron durante horas de baja actividad para minimizar el impacto
Technical Details
Admin Pages 3
/admin/config/content/linkchecker
Configura la extracción de enlaces, el comportamiento de verificación y los ajustes de manejo de errores para el módulo Link checker. Esta página permite a los administradores controlar qué etiquetas HTML se escanean, establecer intervalos de verificación, configurar conexiones simultáneas y definir acciones automatizadas para enlaces rotos.
/admin/reports/broken-links
Ver y gestionar todos los enlaces extraídos con sus códigos de estado HTTP, mensajes de error y conteos de fallos. Filtrar por código de estado, tipo de enlace o contenido. Hacer clic para ver o editar el contenido relacionado.
/admin/config/content/linkcheckerlink/{linkcheckerlink}/edit
Edita la configuración de entidades de enlace individuales. Permite cambiar el método de solicitud y habilitar/deshabilitar la verificación de enlaces para URLs específicas.
Permissions 4
Hooks 5
hook_entity_insert
Se activa cuando se crea una Entity. Link checker extrae enlaces de los Field configurados y crea entidades linkcheckerlink.
hook_entity_update
Se activa cuando se actualiza una Entity. Link checker re-extrae los enlaces y actualiza/crea entidades linkcheckerlink, eliminando los enlaces huérfanos.
hook_entity_delete
Se activa cuando se elimina una Entity. Link checker elimina las entidades linkcheckerlink asociadas y limpia las entradas de la cola.
hook_cron
Se ejecuta durante las ejecuciones de cron. Link checker procesa las entidades no indexadas para la extracción de enlaces y pone en cola los enlaces para la verificación HTTP.
hook_form_field_config_form_alter
Modifica los formularios de configuración de Field para añadir ajustes de Link checker. Añade la casilla 'Escanear enlaces rotos' y la selección de extractor.
Drush Commands 3
drush linkchecker:analyze
Reanaliza el contenido en busca de enlaces extrayendo URLs de todos los campos configurados. Recomendado después de actualizar el módulo o cambiar la configuración.
drush linkchecker:check
Procesa los enlaces en cola y verifica su estado HTTP. Los enlaces se verifican según los intervalos configurados.
drush linkchecker:clear
Elimina todos los datos de enlaces y reanaliza el contenido. ADVERTENCIA: Se eliminan las configuraciones personalizadas de enlaces.
Troubleshooting 6
Algunos servidores bloquean el User-Agent predeterminado de Drupal. Intente cambiar la configuración de User-Agent a un user agent de navegador como Firefox o Edge.
Asegúrese de que cron se llame con la URL pública correcta del sitio, no localhost. Configure la opción Base path o pase el parámetro --uri a los comandos de Drush.
Verifique que 'Scan broken links' esté habilitado en la configuración de campos bajo cada tipo de contenido. Compruebe que las etiquetas HTML apropiadas estén habilitadas en Link extraction settings.
Los enlaces se verifican según el intervalo configurado. Los enlaces nuevos se ponen en cola primero. Revise Recent log messages para la actividad de linkchecker. Puede forzar una verificación con 'drush linkchecker:check'.
La reparación 301 confía en la ubicación de redirección proporcionada por el servidor remoto. Si los sitios proporcionan redirecciones incorrectas, deshabilite la función de reparación automática y actualice los enlaces manualmente.
Reduzca 'Number of simultaneous connections' a un valor más bajo (por ejemplo, 2 o 4) para disminuir las solicitudes HTTP concurrentes y el uso de recursos del servidor.
Security Notes 5
- El permiso 'Administer Link checker' está marcado como restringido: otórguelo solo a administradores de confianza
- La configuración de cuenta de suplantación debe usar un usuario con permisos apropiados, pero considere las implicaciones de seguridad de las modificaciones automáticas de contenido
- Sea cauteloso con la función de reparación automática ya que confía en las redirecciones 301 de sitios externos: una redirección maliciosa podría inyectar URLs no deseadas
- Las URLs en la lista negra aún se extraen pero no se verifican: permanecen visibles en el contenido
- El módulo envía solicitudes HTTP a URLs externas, lo que potencialmente podría usarse para activar acciones en servidores remotos si su contenido contiene URLs especialmente diseñadas