Haz tu pregunta y obtén un resumen del documento referenciando esta página y el proveedor AI de tu elección
Este documento está desactualizado, la versión base se actualizó el 22 de agosto de 2026.
Ir a la documentación en inglésHistorial de versiones
- "Se agregó el enrutamiento por locales basado en dominios a través de la configuración routing.domains."v8.5.02/4/2026
El contenido de esta página ha sido traducido con una IA.
Ver la última versión del contenido original en inglésSi tienes una idea para mejorar esta documentación, no dudes en contribuir enviando una pull request en GitHub.
Enlace de GitHub a la documentaciónCopiar el Markdown del documento a la portapapeles
Dominios personalizados
Intlayer admite el enrutamiento por locales basado en dominios, lo que le permite servir locales específicos desde nombres de host dedicados. Por ejemplo, los visitantes chinos pueden ser dirigidos a intlayer.zh en lugar de intlayer.org/zh.
Cómo funciona
El mapa domains en routing asocia cada locale con un nombre de host. Intlayer utiliza este mapa en dos lugares:
- Generación de URL (
getLocalizedUrl): cuando el locale de destino vive en un dominio diferente al de la página actual, se devuelve una URL absoluta (por ejemplo,https://intlayer.zh/about). Cuando ambos dominios coinciden, se devuelve una URL relativa (por ejemplo,/fr/about). - Proxy del servidor (Next.js y Vite): las solicitudes entrantes se redirigen o reescriben en función del dominio en el que llegan.
Dominios exclusivos frente a compartidos
La distinción clave es la exclusividad:
- Dominio exclusivo - solo un locale se asigna a ese nombre de host (por ejemplo,
zh → intlayer.zh). El dominio en sí identifica el locale, por lo que no se añade ningún prefijo de locale a la ruta.https://intlayer.zh/aboutsirve contenido en chino. - Dominio compartido - varios locales se asignan al mismo nombre de host (por ejemplo,
enyfrse asignan aintlayer.org). Se aplica el enrutamiento estándar basado en prefijos.intlayer.org/fr/aboutsirve contenido en francés.
Configuración
Copiar el código al portapapeles
Los locales que no figuran en domains continúan usando el enrutamiento estándar por prefijo sin ninguna anulación de dominio.
Generación de URL
getLocalizedUrl produce automáticamente el tipo de URL correcto según el contexto de la llamada.
Locale en el mismo dominio (URL relativa)
Copiar el código al portapapeles
Locale en un dominio diferente (URL absoluta)
Copiar el código al portapapeles
Servir desde el propio dominio del locale
Copiar el código al portapapeles
Autodetección del dominio actual
currentDomain es opcional. Cuando se omite, getLocalizedUrl lo resuelve en este orden:
- El nombre de host de una URL de entrada absoluta (por ejemplo,
https://intlayer.org/about→intlayer.org). window.location.hostnameen entornos de navegador.- Si ninguno está disponible (SSR sin opción explícita), se devuelve una URL relativa para locales del mismo dominio y no se produce ninguna URL absoluta - este es el respaldo seguro.
Copiar el código al portapapeles
getMultilingualUrls con dominios
getMultilingualUrls llama a getLocalizedUrl para cada locale, por lo que produce una mezcla de URL relativas y absolutas según el dominio de quien lo llama:
Copiar el código al portapapeles
Estas URL absolutas están listas para usarse en etiquetas <link rel="alternate" hreflang="..."> para SEO.
Comportamiento del Proxy
Next.js
El middleware intlayerProxy maneja automáticamente el enrutamiento de dominios. Agréguelo a su middleware.ts:
Copiar el código al portapapeles
Redirección - la solicitud llega al dominio equivocado para un prefijo de locale dado:
Copiar el código al portapapeles
Reescritura - la solicitud llega al dominio exclusivo del locale sin un prefijo:
Copiar el código al portapapeles
Vite
El complemento Vite intlayerProxy aplica la misma lógica durante el desarrollo:
Copiar el código al portapapeles
Nota: en el desarrollo local normalmente se encuentra enlocalhost, por lo que las redirecciones entre dominios apuntarán a los dominios en vivo en lugar de a otro puerto local. Use una anulación en el archivo hosts (por ejemplo,127.0.0.1 intlayer.zh) o un proxy inverso si necesita probar el enrutamiento multidominio localmente.
Selector de locale
El hook useLocale de next-intlayer maneja la navegación consciente del dominio automáticamente. Cuando un usuario cambia a un locale en un dominio diferente, el hook realiza una navegación de página completa (window.location.href) en lugar de un push del enrutador del lado del cliente, porque el enrutador de Next.js no puede cruzar orígenes.
Copiar el código al portapapeles
No se requiere configuración adicional - useLocale detecta window.location.hostname internamente y decide entre router.replace (mismo dominio) y window.location.href (dominio cruzado).
SEO: Enlaces alternativos hreflang
El enrutamiento basado en dominios se usa comúnmente junto con hreflang para indicar a los motores de búsqueda qué URL indexar para cada idioma. Use getMultilingualUrls para generar el conjunto completo de URL alternativas:
Copiar el código al portapapeles
Esto produce:
Copiar el código al portapapeles
Utilidades principales
Abrir la tabla en una ventana flotante para ver todo el contenido claramente
| Utilidad | Descripción |
|---|---|
getLocalizedUrl(url, locale, { currentDomain }) | Devuelve una URL relativa o absoluta dependiendo de si el locale de destino está en el dominio actual. |
getMultilingualUrls(url, { currentDomain }) | Devuelve un mapa de URL localizadas por locale, mezclando relativas y absolutas según sea necesario. |
getPrefix(locale, { domains }) | Devuelve un prefijo vacío para locales de dominio exclusivo, de lo contrario, un prefijo normal. |