Domain Country Path

Extiende el módulo Domain para soportar prefijos de ruta URL basados en países, permitiendo que múltiples dominios compartan el mismo nombre de host mientras se distinguen por un prefijo de ruta.

country_path
575 sites
30
drupal.org

Instalar

Drupal 11, 10, 9, 8 v8.x-1.10
composer require 'drupal/country_path:8.x-1.10'

Overview

Domain Country Path es una extensión para el módulo Domain que habilita prefijos de ruta URL específicos por país o región en sitios web multi-país. En lugar de usar diferentes nombres de host o subdominios para cada país (por ejemplo, usa.example.com, france.example.com), este módulo te permite usar prefijos de ruta (por ejemplo, example.com/usa, example.com/france) mientras mantienes contextos de dominio separados.

El módulo maneja automáticamente el procesamiento de URL tanto entrante (eliminando el prefijo de país para el enrutamiento interno) como saliente (agregando el prefijo a las URL generadas). También proporciona un plugin de negociación de idioma personalizado que maneja correctamente la detección de idioma cuando se usan rutas de país, asegurando que tanto las rutas de país como los prefijos de idioma funcionen juntos sin problemas (por ejemplo, example.com/usa/en, example.com/france/fr).

Domain Country Path se integra con el módulo Domain Alias cuando está disponible, extendiendo los patrones de alias para soportar sufijos de ruta de país. También proporciona un contexto de caché dedicado (url.country) para la variación de caché adecuada basada en el país/dominio activo.

Features

  • Prefijos de ruta URL basados en países que permiten que múltiples dominios compartan un único nombre de host (por ejemplo, example.com/usa, example.com/france)
  • Procesamiento automático de rutas entrantes que elimina los prefijos de país para el enrutamiento adecuado de Drupal
  • Procesamiento automático de rutas salientes que agrega prefijos de país a todas las URL generadas
  • Plugin de negociación de idioma personalizado (country-path-language-url) que maneja la detección de idioma con prefijos de ruta de país
  • Contexto de caché (url.country) para variaciones de caché adecuadas basadas en el país/dominio activo
  • Integración con el módulo Domain Alias para patrones de alias con soporte de país
  • Formularios de entidad Domain extendidos con campos de configuración de ruta de país
  • Detección automática de dominio basada en el prefijo de ruta URL además del nombre de host

Use Cases

Sitio de comercio electrónico multi-país con un solo nombre de host

Un sitio de comercio electrónico quiere servir a diferentes países (EE.UU., Francia, Alemania) desde un solo nombre de host (shop.example.com) pero con contenido y configuraciones específicas por país. Usando Domain Country Path, configuran los dominios como shop.example.com/usa, shop.example.com/france y shop.example.com/de. Cada país tiene su propio contexto de dominio para visibilidad de contenido, precios y configuraciones, mientras comparten el mismo nombre de host.

Contenido regional con variaciones de idioma

Un sitio web corporativo necesita servir contenido a diferentes regiones con múltiples idiomas. Por ejemplo, shop.example.com/usa/en (EE.UU. Inglés), shop.example.com/france/fr (Francia Francés), shop.example.com/france/en (Francia Inglés). El módulo maneja el prefijo de país mientras el sistema de idiomas de Drupal maneja el prefijo de idioma, resultando en estructuras de URL limpias.

Gestión simplificada de DNS para sitios multi-región

En lugar de gestionar múltiples registros DNS para subdominios específicos por país (usa.example.com, france.example.com), una única entrada DNS para example.com sirve a todos los países a través de prefijos de ruta. Esto simplifica la gestión de certificados SSL y la configuración DNS mientras mantiene contextos de dominio separados para cada país.

Tips

  • Al ingresar un nombre de host con una ruta de país en el formulario de dominio, usa una barra diagonal para separarlos (por ejemplo, example.com/usa). El módulo lo analiza automáticamente.
  • El prefijo de ruta de país se convierte en el primer segmento de todas las URLs para ese dominio, apareciendo antes de cualquier prefijo de idioma.
  • Los patrones de Domain Alias que terminan con un comodín (*) no deben incluir la ruta de país ya que se agregará automáticamente.
  • El módulo proporciona el contexto de caché 'url.country' - úsalo en código personalizado al renderizar contenido que varía por país.
  • Para mejor rendimiento, habilita el caché de página con el contexto de caché url.country para almacenar páginas en caché por país.

Technical Details

Admin Pages 2
Dominios /admin/config/domain

Listado de dominios extendido que muestra el sufijo de ruta de país junto con el nombre de host de cada dominio. La lista muestra los dominios con su ruta completa (por ejemplo, example.com/usa) como enlaces clicables que navegan a ese contexto de dominio.

Agregar dominio /admin/config/domain/add

Formulario de creación de dominio extendido que acepta nombres de host con sufijos de ruta de país. Al ingresar un nombre de host como 'example.com/usa', el módulo analiza y almacena automáticamente el nombre de host (example.com) y la ruta de país (usa) por separado.

Hooks 5
hook_domain_request_alter

Altera la detección de dominio para soportar prefijos de país basados en ruta. Verifica la ruta URL para un prefijo de país y carga el dominio correspondiente si se encuentra.

hook_entity_type_build

Sobrescribe la clase de entidad Domain con CountryPathDomain para modificar el comportamiento de preSave para la validación del nombre de host.

hook_entity_type_alter

Sobrescribe los manejadores de formulario de las entidades Domain y Domain Alias con formularios personalizados que soportan el análisis de rutas de país.

hook_form_alter

Modifica los formularios de dominio y alias de dominio para soportar la entrada de ruta de país en el campo de nombre de host.

hook_language_types_info_alter

Agrega el negociador country-path-language-url a los negociadores de idioma URL habilitados fijos para el soporte multilingüe adecuado.

Troubleshooting 4
Errores 404 al acceder a URLs con ruta de país

Asegúrate de que el dominio esté correctamente configurado con la ruta de país. Edita el dominio e ingresa el nombre de host con el sufijo de ruta (por ejemplo, example.com/usa). Verifica que el dominio aparezca correctamente en la lista de dominios con la ruta completa.

Los prefijos de idioma no funcionan correctamente con las rutas de país

Asegúrate de que el módulo Language esté instalado y el negociador 'Country Path Language Handler URL' esté habilitado. El módulo lo activa automáticamente en la instalación, pero puedes verificarlo en /admin/config/regional/language/detection.

Los alias de dominio no coinciden con las rutas de país

Al crear alias para dominios con rutas de país, asegúrate de que los patrones sin comodín incluyan el sufijo de ruta de país (por ejemplo, example.org/usa). Los patrones con comodín (por ejemplo, *.example.com) no deben incluir la ruta de país ya que se agregará automáticamente.

La caché no varía por país

Asegúrate de que el contexto de caché 'url.country' se esté aplicando. El módulo lo agrega automáticamente a las URLs salientes. Si tienes lógica de caché personalizada, agrega 'url.country' a tus contextos de caché.

Security Notes 3
  • El módulo valida los patrones de ruta de país para prevenir caracteres inválidos y problemas de seguridad.
  • La validación del nombre de host se extiende para permitir barras diagonales solo para la separación de ruta de país.
  • El módulo no agrega nuevos permisos - se basa en los permisos existentes del módulo Domain para el control de acceso.