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.

WARNING
Los datos de catálogo se amplían a medida que aumenta el número de sitios web y tiendas. Según la arquitectura del proyecto, las tiendas adicionales pueden provocar un proceso de indexación más largo y tiempos de respuesta más lentos para las páginas de catálogo no almacenadas en caché. El Adobe recomienda supervisar de cerca el rendimiento del sitio.

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/
TIP
Para agregar una vista de tienda a la dirección URL base del sitio, no es necesario crear varios directorios. Consulte Agregar el código de almacén a la dirección URL base en la Guía de configuración.

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:

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:

  1. Configurar rutas o ubicaciones: especifique cómo Adobe Commerce administra las direcciones URL entrantes

  2. Configurar sitios web, tiendas y vistas de tiendas: configúrelos con la IU de administración de Adobe Commerce

  3. Modificar variables: especifique los valores de las variables MAGE_RUN_TYPE y MAGE_RUN_CODE en el archivo magento-vars.php

  4. Implementar y probar entornos—implementar y probar la rama integration

TIP
Puede utilizar un entorno local para configurar varios sitios web o tiendas. Consulte las instrucciones de Cloud Docker para configurar varios sitios web o tiendas.

Actualizaciones de configuración para entornos Pro

WARNING
Algunos proyectos Pro requieren un vale de soporte técnico para actualizar la configuración de ruta en el archivo 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:

  1. En la estación de trabajo local, abra el archivo .magento/routes.yaml en un editor de texto.

  2. 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"
    
  3. Guarde los cambios en el archivo routes.yaml.

  4. 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:

  1. 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
                ...
    
  2. 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 web passthru 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:

  1. 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"
    
  2. Cree un subdirectorio para el sitio web bajo el directorio pub: pub/<website>

  3. Copie el archivo pub/index.php en el directorio pub/<website> y actualice la ruta de acceso bootstrap (/../../app/bootstrap.php).

    code language-none
    try {
        require __DIR__ . '/../../app/bootstrap.php';
    } catch (\Exception $e) {
    
  4. 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
              ...
    
  5. 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:

  1. 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;
    }
    
  2. Mover el bloque if comentado para que sea después de el bloque function 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";
    }
    
  3. 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 tienda
      • store: 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;
    }
    
  4. 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.

  1. 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>
    
  2. Espere a que se complete la implementación.

  3. 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/

  4. 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.

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26