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.

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 Añadir el código de tienda a la URL base en el 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 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:

  1. Configuración de rutas o ubicaciones: especifique cómo Adobe Commerce gestiona las direcciones URL entrantes

  2. Configuración de sitios web, tiendas y vistas de tiendas: configurar mediante la IU de administración de Adobe Commerce

  3. Modificar variables: permite especificar los valores del MAGE_RUN_TYPE y MAGE_RUN_CODE variables en la variable magento-vars.php archivo

  4. Implementación y prueba de entornos—implementar y probar el integration ramificación

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 requerir un ticket de asistencia para actualizar la configuración de ruta en la 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:

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

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

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

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

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

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

  1. 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;
    }
    
  2. Mover el elemento comentado if bloquear para que sea después el function 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";
    }
    
  3. 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 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 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.

  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, 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/

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

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