Domain
El conjunto de módulos Domain te permite compartir usuarios, contenido y configuración entre un grupo de dominios desde una única instalación y base de datos.
domain
Overview
El conjunto de módulos Domain proporciona una solución integral de gestión multidominio para Drupal. Permite a los administradores registrar múltiples dominios dentro de una única instalación de Drupal, compartir contenido y usuarios entre dominios, y proporcionar configuraciones y controles de acceso específicos por dominio.
El módulo admite características como acceso a contenido basado en dominio, anulaciones de configuración específicas por dominio, alias de dominio con patrones comodín, gestión de URL canónicas para SEO y soporte de inicio de sesión entre dominios. Los registros de dominio se almacenan como entidades de configuración, lo que los hace exportables como parte de la configuración de tu sitio.
El conjunto incluye varios submódulos: Domain (funcionalidad principal), Domain Access (control de acceso al contenido), Domain Alias (mapeo de nombres de host), Domain Config (configuración por dominio), Domain Config UI (interfaz de administración para configuración), Domain Content (resumen de contenido por dominio) y Domain Source (gestión de URL canónicas).
Features
- Registrar múltiples dominios dentro de una única instalación de Drupal con nombres de host y nombres de máquina únicos
- Sistema de negociación de dominios que determina el dominio activo basándose en las solicitudes HTTP
- Soporte para esquemas de URL http, https o variable por dominio
- Inicio de sesión de usuarios entre dominios mediante configuración de cookies compartidas
- Control de acceso a contenido basado en dominio con permisos configurables por tipo de contenido
- Alias de dominio con soporte de patrones comodín (por ejemplo, *.example.com) y opciones de redirección
- Anulaciones de configuración por dominio para cualquier configuración de Drupal, incluyendo el nombre del sitio y ajustes
- Anulaciones de configuración de dominio con reconocimiento de idioma
- Gestión de URL canónicas (Domain Source) para generación consistente de enlaces entre dominios
- Mapeo de entornos de dominio para flujo de trabajo de desarrollo (local, desarrollo, staging, pruebas)
- Soporte de tokens para valores específicos de dominio
- Clases CSS personalizadas por dominio añadidas a la etiqueta body
- Integración con Views con controles de acceso y filtros basados en dominio
- Comandos Drush para operaciones de gestión de dominios
- Plugins de Block para navegación de dominios, cambio entre dominios y visualización de información del servidor
- Plugin de condición para visibilidad de bloques basada en dominio
Use Cases
Sitio web multimarca
Gestiona múltiples sitios web de marcas desde una sola instalación de Drupal. Cada marca obtiene su propio dominio (marca1.com, marca2.com) con nombres de sitio, temas (a través del módulo contribuido Domain Theme Switch) y configuraciones de visibilidad de contenido separados, mientras comparten la misma base de usuarios e interfaz administrativa.
Despliegue multirregión
Ejecuta sitios web específicos por región (us.example.com, eu.example.com) desde una sola base de código. Usa Domain Config para personalizar el nombre del sitio, información de contacto y configuraciones regionales por dominio. Usa Domain Access para controlar qué contenido aparece en cada sitio regional.
Flujo de trabajo de desarrollo
Usa Domain Alias para mapear entornos de desarrollo (example.local, example.dev.cloudhost.com, example.staging.cloudhost.com) a sus contrapartes de producción. Configura los entornos para que los enlaces se reescriban correctamente para cada etapa del desarrollo sin modificar los registros de dominio.
Micrositios
Crea micrositios para campañas, eventos o lanzamientos de productos que comparten la gestión de contenido del sitio principal pero aparecen como dominios separados. Usa Domain Access para asignar contenido específico a los micrositios mientras mantienes todo gestionable desde un administrador central.
Intranet y sitio público
Ejecuta tanto un sitio web público como una intranet privada desde la misma instalación. Usa los permisos de Domain Access para controlar qué tipos de contenido y nodos aparecen en cada dominio, con roles de usuario y permisos separados por dominio.
SEO y URLs canónicas
Usa Domain Source para asegurar que el contenido que aparece en múltiples dominios siempre tenga URLs canónicas consistentes. Esto previene problemas de contenido duplicado y consolida los rankings de motores de búsqueda en tu dominio preferido.
Redes de franquicias o distribuidores
Gestiona una red de sitios web de franquicias o distribuidores donde cada ubicación tiene su propio dominio. Comparte contenido común (catálogo de productos, políticas) entre todos los sitios mientras permites personalización y contenido específico por ubicación.
Tips
- Los registros de dominio son entidades de configuración, por lo que se exportan con la configuración de tu sitio y pueden gestionarse en control de versiones.
- Siempre añade url.site a required_cache_contexts cuando uses Domain Config para asegurar una segmentación de caché adecuada.
- Usa alias basados en entorno para flujos de trabajo de desarrollo para evitar modificar registros de dominio de producción durante el desarrollo.
- El bloque de cambio de dominio es útil durante el desarrollo pero debería restringirse en producción solo a usuarios administradores.
- Al eliminar dominios, se te pedirá que reasignes el contenido - planifica tu estrategia de migración de contenido antes de la eliminación.
- Usa drush domain:generate para configurar rápidamente dominios de prueba durante el desarrollo.
- Domain Source reescribe enlaces pero no emite redirecciones. Si necesitas redirecciones, configúralas en Domain Alias o usa un módulo de redirección separado.
- Para sitios multidominio grandes, considera usar concesiones de acceso a nodos por bundle (característica experimental en Domain Access) para mejor rendimiento.
- El soporte de Token en clases CSS permite clases dinámicas como domain-[domain:machine-name] para hooks de tematización específicos por dominio.
Technical Details
Admin Pages 11
/admin/config/domain
Ver y gestionar todos los registros de dominio registrados. Lista los dominios con su nombre de host, nombre, esquema, estado e indicador de dominio predeterminado. Proporciona acciones en línea para habilitar, deshabilitar o establecer dominios predeterminados. El dominio activo actual se muestra en negrita.
/admin/config/domain/add
Crear un nuevo registro de dominio con nombre de host, nombre, esquema de URL y configuración de estado.
/admin/config/domain/settings
Configurar ajustes globales para el módulo Domain, incluyendo soporte de caracteres, manejo del prefijo www, clases CSS y rutas accesibles para dominios inactivos.
/admin/config/domain/domain_access
Configurar cómo se muestran los campos de Domain Access y controlar el comportamiento de acceso a nodos.
/admin/config/domain/alias/{domain}
Gestionar alias para un dominio específico. Los alias definen dominios únicos o patrones que se asignan a registros de dominio existentes, con soporte para comodines y opciones de redirección.
/admin/config/domain/alias/{domain}/add
Crear un nuevo alias para un dominio con configuración de patrón, redirección y entorno.
/admin/config/domain/config-ui
Configurar qué formularios de configuración pueden tener anulaciones específicas de dominio y cuáles deben excluirse.
/admin/config/domain/config-ui/list
Ver todas las anulaciones de configuración específicas de dominio guardadas con opciones para inspeccionar, habilitar/deshabilitar o eliminarlas.
/admin/config/domain/domain_source
Configurar qué rutas y paths deben excluirse de las reescrituras de enlaces de Domain Source.
/admin/content/domain-content
Revisar contenido por dominio asignado. Proporciona páginas de resumen de contenido basadas en Views filtradas por asignación de dominio.
/admin/content/domain-editors
Revisar usuarios por dominio asignado. Proporciona páginas de resumen de usuarios basadas en Views filtradas por asignaciones de editores de dominio.
Permissions 31
Hooks 4
hook_domain_request_alter
Permite a los módulos modificar el domain activo durante la negociación de la solicitud.
hook_domain_validate_alter
Permite a los módulos modificar o añadir errores de validación para los hostnames de domain.
hook_domain_references_alter
Permite a los módulos modificar las opciones de referencia de domain disponibles en los campos de referencia de entity.
hook_domain_source_exclude_routes_options_alter
Permite a los módulos modificar la lista de rutas que pueden excluirse de las reescrituras de enlaces de Domain Source.
Drush Commands 17
drush domain:list
Lista los dominios activos del sitio.
drush domain:add
Añade un nuevo dominio al sitio.
drush domain:delete
Elimina un dominio del sitio.
drush domain:default
Establece el dominio predeterminado.
drush domain:disable
Desactiva un dominio.
drush domain:enable
Activa un dominio.
drush domain:name
Cambia la etiqueta de un dominio.
drush domain:scheme
Cambia el esquema de URL de un dominio.
drush domain:test
Prueba los dominios para verificar la respuesta HTTP correcta.
drush domain:info
Lista información general sobre los dominios del sitio.
drush domain:replace
Reemplaza cadenas en los nombres de host de dominios.
drush domain:generate
Genera dominios para pruebas.
drush domain-alias:list
Lista todos los alias de dominio.
drush domain-alias:add
Añade un nuevo alias de dominio.
drush domain-alias:delete
Elimina un alias de dominio.
drush domain-alias:delete-bulk
Elimina múltiples alias.
drush domain-alias:update
Actualiza un alias de dominio.
Troubleshooting 8
Establece el valor cookie_domain en sites/default/services.yml para que coincida con el nombre de host raíz de tus sitios (por ejemplo, cookie_domain: '.example.com'). Esto requiere que todos los dominios compartan un dominio padre común.
Añade url.site a required_cache_contexts en services.yml. Limpia las cachés después de hacer el cambio. Asegúrate de que cualquier anulación de configuración siga el patrón de nombres correcto: domain.config.DOMAIN_ID.config_name
Habilita CORS en services.yml estableciendo cors.config.enabled a true. Configura allowedOrigins para incluir tus dominios o usa ['*'] para todos los orígenes.
Asegúrate de que todos los dominios y alias estén añadidos a trusted_host_patterns en settings.php. Domain rechazará redirigir a hosts que no estén en la lista de confianza.
Verifica los valores del campo Domain Access en el contenido. Si usas Domain Access, reconstruye los permisos de acceso a nodos en /admin/reports/status/rebuild después de los cambios de configuración.
Asegúrate de que la casilla Test server response esté desmarcada si el DNS del dominio aún no está configurado. Alternativamente, asegúrate de que tu servidor pueda alcanzar el nombre de host del dominio vía HTTP.
Verifica el orden de clasificación de los alias. Los patrones más específicos deben tener pesos más bajos. La coincidencia con comodines sigue un orden de precedencia específico documentado en el README de Domain Alias.
Asegúrate de que el manejador de acceso de Views correcto esté configurado (domain, domain_access_content o domain_access_editor). Añade filtros contextuales o argumentos apropiados para los campos de dominio.
Security Notes 7
- Todos los permisos marcados como 'restrict access' se consideran sensibles y solo deberían otorgarse a roles de confianza.
- Habilitar CORS para AJAX entre dominios tiene implicaciones de seguridad - revisa la documentación antes de habilitarlo.
- El permiso 'access inactive domains' permite eludir las restricciones de visibilidad de dominio - otórgalo solo a administradores.
- Las anulaciones de configuración de dominio pueden cambiar configuraciones sensibles de seguridad - restringe el permiso 'use domain config ui' apropiadamente.
- El inicio de sesión entre dominios comparte cookies de sesión entre dominios - asegúrate de que todos los dominios estén bajo tu control antes de habilitarlo.
- Siempre configura trusted_host_patterns en settings.php para prevenir ataques de redirección a dominios maliciosos.
- El permiso 'administer domains' otorga control total sobre toda la funcionalidad de dominio - equivalente a acceso de administrador del sitio para operaciones de dominio.