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. Consulte 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
Añadir el nuevo dominio a Fastly, consulte Administrar dominios, o abra un ticket de asistencia para solicitar ayuda. Además, debe Enviar un ticket de asistencia de Adobe Commerce para solicitar que se agreguen nuevos dominios a un clúster.
-
Solo para producción inicial
Añadir 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 Domains en la pestaña 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 varios almacenes, consulte Varios sitios web o tiendas en el 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:
-
Configuración de rutas o ubicaciones: especifique cómo Adobe Commerce gestiona las direcciones URL entrantes
-
Configuración de sitios web, tiendas y vistas de tiendas: configurar mediante la IU de administración de Adobe Commerce
-
Modificar variables: permite especificar los valores del
MAGE_RUN_TYPE
yMAGE_RUN_CODE
variables en la variablemagento-vars.php
archivo -
Implementación y prueba de entornos—implementar y probar el
integration
ramificación
Actualizaciones de configuración para entornos Pro
routes.yaml
y la configuración de cron en el archivo .magento.app.yaml
archivo. 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 MUST Enviar un ticket de asistencia de Adobe Commerce que describe los cambios de configuración intentados. 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. Si hay varios almacenes con dominios únicos, es necesario definir cada dominio en la variable routes.yaml
archivo. 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
.magento/routes.yaml
en un editor de texto. -
Defina el dominio y los subdominios. El
mymagento
el valor de flujo ascendente es el mismo valor que la propiedad de nombre en la variable.magento.app.yaml
archivo.code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http"
-
Guarde los cambios en
routes.yaml
archivo. -
Continuar a Configuración de 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 variable web
propiedad en el .magento.app.yaml
define cómo la aplicación se expone a la web. Web ubicaciones permiten una mayor granularidad en las solicitudes entrantes. Por ejemplo, si el dominio es store.com
, puede utilizar /first
(sitio predeterminado) y /second
para solicitudes a dos almacenes 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 ...
-
Crear 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
website
para acceder 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 la raíz (
/
) y para la estática (/static
) ubicaciones.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 en
pub
directorio:pub/<website>
-
Copie el
pub/index.php
en el archivopub/<website>
y actualice elbootstrap
ruta (/../../app/bootstrap.php
).code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
Crear un paso a través para
index.php
archivo.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 se encuentra en.gitignore
, la notificación push puede requerir la opción force )..magento.app.yaml
Configuración de sitios web, tiendas y vistas de tiendas
En el IU de administración, configure su Adobe Commerce Sitios web, Tiendas, y Vistas de tienda. Consulte Configure varios sitios web, tiendas y vistas de tiendas en el Administrador de en el 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 magento-vars.php
archivo.
Modificar variables
En lugar de configurar un host virtual NGINX, pase el MAGE_RUN_CODE
y MAGE_RUN_TYPE
variables que utilizan el magento-vars.php
en el directorio raíz del proyecto.
Para pasar variables mediante magento-vars.php
archivo:
-
Abra el
magento-vars.php
en un editor de texto.El predeterminado
magento-vars.php
archivo debe tener el aspecto siguiente: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 elemento comentado
if
bloquear para que sea después elfunction
bloqueo y ya no se comentan.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 la variable
if (isHttpHost("example.com"))
block:-
example.com
: con la URL base de su sitio web -
default
: con el CÓDIGO único para su sitio web o vista de tienda -
store
: con uno de los siguientes valores:website
: cargue 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
magento-vars.php
archivo.
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, utilice el formato:
http://<magento-run-code>.<site-URL>
Por ejemplo,
http://french.master-name-projectID.us.magentosite.cloud/
Con un dominio compartido, utilice 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 con la variable
integration
para una implementación posterior.
Implementar en ensayo y producción
Siga el proceso de implementación para implementación en Ensayo y producción. Para los entornos Starter y Pro, se utiliza la variable Cloud Console para insertar código en 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.