Configurar varios sitios web o tiendas
Puede configurar Adobe Commerce para que tenga varios sitios web o tiendas, como una tienda en inglés, una tienda en francés y una tienda en alemán. Ver Explicación de sitios web, tiendas y vistas de tiendas.
El proceso para configurar varios almacenes depende de si elige utilizar dominios únicos o compartidos.
Varios almacenes con dominios únicos:
https://first.store.com/
https://second.store.com/
Varios almacenes con el mismo dominio:
https://store.com/first/
https://store.com/second/
Añadir dominios
Los dominios personalizados se pueden añadir a Pro Staging y a cualquier entorno de producción; no se pueden añadir a entornos de integración.
El proceso para agregar un dominio depende del tipo de cuenta de Cloud:
-
Para ensayo y producción profesionales
Agregue el nuevo dominio a Fastly; consulte Administrar dominios o abra un ticket de asistencia para solicitar ayuda. Además, debe enviar un vale de soporte de Adobe Commerce para solicitar que se agreguen nuevos dominios a un clúster.
-
Solo para producción inicial
Agregue el nuevo dominio a Fastly; consulte Administrar dominios o Enviar un ticket de asistencia de Adobe Commerce para solicitar ayuda. Además, debe agregar el nuevo dominio a la ficha Dominios en Cloud Console:
https://<zone>.magento.cloud/projects/<project-ID>/edit
Configuración de la instalación local
Para configurar la instalación local de modo que utilice varias tiendas, consulte Varias tiendas o sitios web en la Guía de configuración.
Después de crear y probar correctamente la instalación local para utilizar varias tiendas, debe preparar su entorno de integración:
-
Configurar rutas o ubicaciones: especifique cómo Adobe Commerce administra las direcciones URL entrantes
-
Configurar sitios web, tiendas y vistas de tiendas: configúrelos con la IU de administración de Adobe Commerce
-
Modificar variables: especifique los valores de las variables
MAGE_RUN_TYPE
yMAGE_RUN_CODE
en el archivomagento-vars.php
-
Implementar y probar entornos—implementar y probar la rama
integration
Actualizaciones de configuración para entornos Pro
routes.yaml
y la configuración de cron en el archivo .magento.app.yaml
. El Adobe recomienda actualizar y probar los archivos de configuración de YAML en un entorno de integración y, a continuación, implementar los cambios en el entorno de ensayo. Si los cambios no se aplican a los sitios de ensayo después de volver a implementar y no hay mensajes de error relacionados en el registro, DEBE enviar un vale de soporte de Adobe Commerce que describa los cambios de configuración que se han intentado realizar. Incluya todos los archivos de configuración de YAML actualizados en el ticket.Configuración de rutas para dominios independientes
Las rutas definen cómo procesar las direcciones URL entrantes. Varias tiendas con dominios únicos requieren que defina cada dominio en el archivo routes.yaml
. La forma de configurar las rutas depende de cómo desee que funcione el sitio.
Para configurar rutas en un entorno de integración:
-
En la estación de trabajo local, abra el archivo
.magento/routes.yaml
en un editor de texto. -
Defina el dominio y los subdominios. El valor ascendente
mymagento
es el mismo valor que la propiedad name del archivo.magento.app.yaml
.code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http"
-
Guarde los cambios en el archivo
routes.yaml
. -
Continuar a Configurar sitios web, tiendas y vistas de tiendas.
Configuración de ubicaciones para dominios compartidos
Donde la configuración de rutas define cómo se procesan las direcciones URL, la propiedad web
del archivo .magento.app.yaml
define cómo se expone la aplicación a la web. Las ubicaciones web permiten una mayor granularidad para las solicitudes entrantes. Por ejemplo, si su dominio es store.com
, puede usar /first
(sitio predeterminado) y /second
para solicitudes a dos tiendas diferentes que comparten un dominio.
Para configurar una nueva ubicación web:
-
Cree un alias para la raíz (
/
). En este ejemplo, el alias es&app
en la línea 3.code language-yaml web: locations: "/": &app # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ...
-
Cree un paso a través para el sitio web (
/website
) y haga referencia a la raíz con el alias del paso anterior.El alias permite que
website
tenga acceso a los valores desde la ubicación raíz. En este ejemplo, el sitio webpassthru
está en la línea 21.code language-yaml web: locations: "/": &app # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/media": root: "pub/media" ... "/static": root: "pub/static" allow: true scripts: false passthru: "/front-static.php" rules: ^/static/version\d+/(?<resource>.*)$: passthru: "/static/$resource" "/<website>": *app ...
Para configurar una ubicación con un directorio diferente:
-
Cree un alias para las ubicaciones raíz (
/
) y estáticas (/static
).code language-yaml web: locations: "/": &root # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/static": &static root: "pub/static"
-
Cree un subdirectorio para el sitio web bajo el directorio
pub
:pub/<website>
-
Copie el archivo
pub/index.php
en el directoriopub/<website>
y actualice la ruta de accesobootstrap
(/../../app/bootstrap.php
).code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
Cree un paso a través para el archivo
index.php
.code language-yaml web: locations: "/": &root # The public directory of the app, relative to its root. root: "pub" passthru: "/index.php" index: - index.php ... "/media": root: "pub/media" ... "/static": &static root: "pub/static" allow: true scripts: false passthru: "/front-static.php" rules: ^/static/version\d+/(?<resource>.*)$: passthru: "/static/$resource" "/<website>": <<: *root passthru: "<website>/index.php" "/<website>/static": *static ...
-
Confirme y envíe los archivos modificados.
pub/<website>/index.php
(si este archivo está en.gitignore
, la inserción puede requerir la opción de forzar )..magento.app.yaml
Configuración de sitios web, tiendas y vistas de tiendas
En la IU de administración, configure sus sitios web, tiendas y vistas de tiendas de Adobe Commerce. Consulte Configurar varios sitios web, tiendas y vistas de tiendas en Admin en la Guía de configuración.
Es importante utilizar el mismo nombre y código de sus sitios web, tiendas y vistas de tiendas del administrador al configurar la instalación local. Necesita estos valores cuando actualice el archivo magento-vars.php
.
Modificar variables
En lugar de configurar un host virtual NGINX, pase las variables MAGE_RUN_CODE
y MAGE_RUN_TYPE
mediante el archivo magento-vars.php
en el directorio raíz del proyecto.
Para pasar variables usando el archivo magento-vars.php
:
-
Abra el archivo
magento-vars.php
en un editor de texto.El archivo
magento-vars.php
predeterminado debe tener el siguiente aspecto:code language-php <?php // enable, adjust and copy this code for each store you run // Store #0, default one //if (isHttpHost("example.com")) { // $_SERVER["MAGE_RUN_CODE"] = "default"; // $_SERVER["MAGE_RUN_TYPE"] = "store"; //} function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; }
-
Mover el bloque
if
comentado para que sea después de el bloquefunction
y ya no se comente.code language-php <?php // enable, adjust and copy this code for each store you run // Store #0, default one function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("example.com")) { $_SERVER["MAGE_RUN_CODE"] = "default"; $_SERVER["MAGE_RUN_TYPE"] = "store"; }
-
Reemplace los siguientes valores en el bloque
if (isHttpHost("example.com"))
:-
example.com
: con la dirección URL base de su sitio web -
default
: con el código único para tu sitio web o vista de tienda -
store
: con uno de los siguientes valores:website
: carga el sitio web en la tiendastore
: carga una vista de tienda en la tienda
Para varios sitios con dominios únicos:
code language-php <?php function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("second.store.com")) { $_SERVER["MAGE_RUN_CODE"] = "<second-site>"; $_SERVER["MAGE_RUN_TYPE"] = "website"; }elseif (isHttpHost("store.com")){ $_SERVER["MAGE_RUN_CODE"] = "base"; $_SERVER["MAGE_RUN_TYPE"] = "website"; }
Para varios sitios con el mismo dominio, debe comprobar el host y el URI:
code language-php <?php function isHttpHost($host) { if (!isset($_SERVER['HTTP_HOST'])) { return false; } return $_SERVER['HTTP_HOST'] === $host; } if (isHttpHost("store.com")) { $code = "base"; $type = "website"; $uri = explode('/', $_SERVER['REQUEST_URI']); if (isset($uri[1]) && $uri[1] == 'second') { $code = '<second-site>'; $type = 'website'; } $_SERVER["MAGE_RUN_CODE"] = $code; $_SERVER["MAGE_RUN_TYPE"] = $type; }
-
-
Guarde los cambios en el archivo
magento-vars.php
.
Implementación y pruebas en el servidor de integración
Inserte los cambios en su entorno de integración de Adobe Commerce en la infraestructura de la nube y pruebe su sitio.
-
Agregar, confirmar y enviar cambios de código a la rama remota.
code language-bash git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
-
Espere a que se complete la implementación.
-
Después de la implementación, abra la URL de la tienda en un explorador web.
Con un dominio único, use el formato:
http://<magento-run-code>.<site-URL>
Por ejemplo,
http://french.master-name-projectID.us.magentosite.cloud/
Con un dominio compartido, use el formato:
http://<site-URL>/<magento-run-code>
Por ejemplo,
http://master-name-projectID.us.magentosite.cloud/french/
-
Pruebe exhaustivamente el sitio y combine el código en la rama
integration
para una implementación posterior.
Implementar en ensayo y producción
Siga el proceso de implementación de implementación en Ensayo y producción. Para los entornos Starter y Pro, utiliza Cloud Console para insertar el código en todos los entornos.
El Adobe recomienda realizar todas las pruebas en el entorno de ensayo antes de pasar al entorno de producción. Realice cambios en el código en el entorno de integración e inicie el proceso para implementar de nuevo en todos los entornos.