Configuration de plusieurs sites web ou magasins

Vous pouvez configurer Adobe Commerce pour qu’il y ait plusieurs sites Web ou magasins, tels qu’un magasin anglais, un magasin français et un magasin allemand. Voir Présentation des sites web, des magasins et des vues de magasin.

WARNING
Les données du catalogue s’étendent au fur et à mesure que vous augmentez le nombre de sites web et de magasins. Selon l’architecture de votre projet, les magasins supplémentaires peuvent entraîner un processus d’indexation plus long et des temps de réponse plus lents pour les pages de catalogue non mises en cache. Adobe vous recommande de surveiller de près les performances du site.

Le processus de configuration de plusieurs magasins varie selon que vous choisissez d’utiliser des domaines uniques ou partagés.

Plusieurs magasins avec des domaines uniques :

https://first.store.com/
https://second.store.com/

Plusieurs magasins avec le même domaine :

https://store.com/first/
https://store.com/second/
TIP
Pour ajouter une vue de magasin à l’URL de base du site, il n’est pas nécessaire de créer plusieurs répertoires. Voir Ajouter le code de magasin à l’URL de base dans le Guide de configuration.

Ajout de domaines

Les domaines personnalisés peuvent être ajoutés à Pro Staging et à tout environnement de production ; ils ne peuvent pas être ajoutés aux environnements d’intégration.

Le processus d’ajout d’un domaine dépend du type de compte Cloud :

Configuration de l’installation locale

Pour configurer votre installation locale afin d’utiliser plusieurs magasins, voir Plusieurs sites web ou magasins dans le Guide de configuration.

Après avoir créé et testé l’installation locale pour utiliser plusieurs magasins, vous devez préparer votre environnement d’intégration :

  1. Configuration des itinéraires ou des emplacements: spécifiez la manière dont les URL entrantes sont gérées par Adobe Commerce.

  2. Configuration des sites web, des magasins et des vues de magasin: configuration à l’aide de l’interface utilisateur d’administration d’Adobe Commerce

  3. Modification des variables: spécifiez les valeurs de la variable MAGE_RUN_TYPE et MAGE_RUN_CODE dans la variable magento-vars.php fichier

  4. Déploiement et test des environnements: déployez et testez le integration branche

TIP
Vous pouvez utiliser un environnement local pour configurer plusieurs sites web ou magasins. Consultez les instructions de Cloud Docker pour Configuration de plusieurs sites web ou magasins.

Mises à jour de configuration des environnements Pro

WARNING
Certains Projets Pro nécessitent un ticket de support pour mettre à jour la configuration de l’itinéraire dans la variable routes.yaml et la configuration cron dans le fichier .magento.app.yaml fichier . Adobe recommande de mettre à jour et de tester les fichiers de configuration YAML dans un environnement d’intégration, puis de déployer les modifications dans l’environnement d’évaluation. Si vos modifications ne sont pas appliquées aux sites d’évaluation après le redéploiement et qu’il n’y a aucun message d’erreur associé dans le journal, alors vous DOMAINE Envoi d’un ticket d’assistance Adobe Commerce qui décrit les modifications de configuration tentées. Incluez tous les fichiers de configuration YAML mis à jour dans le ticket.

Configuration d’itinéraires pour des domaines distincts

Les itinéraires définissent le traitement des URL entrantes. Plusieurs magasins avec des domaines uniques nécessitent de définir chaque domaine dans la variable routes.yaml fichier . La configuration des itinéraires dépend de la manière dont votre site doit fonctionner.

Pour configurer des itinéraires dans un environnement d’intégration:

  1. Sur votre poste de travail local, ouvrez le .magento/routes.yaml dans un éditeur de texte.

  2. Définissez le domaine et les sous-domaines. La variable mymagento la valeur en amont est la même valeur que la propriété name dans la propriété .magento.app.yaml fichier .

    code language-yaml
    "http://{default}/":
        type: upstream
        upstream: "mymagento:http"
    
    "http://<second-site>.{default}/":
        type: upstream
        upstream: "mymagento:http"
    
  3. Enregistrez vos modifications dans le routes.yaml fichier .

  4. Passez à Configuration des sites web, des magasins et des vues de magasin.

Configuration des emplacements pour les domaines partagés

Lorsque la configuration des itinéraires définit le mode de traitement des URL, la variable web dans la propriété .magento.app.yaml définit la manière dont votre application est exposée sur le web. Web emplacements permettent une plus grande granularité pour les requêtes entrantes. Par exemple, si votre domaine est store.com, vous pouvez utiliser /first (site par défaut) et /second pour les demandes envoyées à deux magasins différents qui partagent un domaine.

Pour configurer un nouvel emplacement web:

  1. Créez un alias pour la racine (/). Dans cet exemple, l’alias est &app à la ligne 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. Création d’une passerelle pour le site web (/website) et référencez la racine à l’aide de l’alias de l’étape précédente.

    L’alias permet website pour accéder aux valeurs de l’emplacement racine. Dans cet exemple, le site web passthru est à la ligne 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
              ...
    

Pour configurer un emplacement avec un autre répertoire:

  1. Créez un alias pour la racine (/) et pour le paramètre statique (/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. Créez un sous-répertoire pour le site web sous le pub directory: pub/<website>

  3. Copiez le pub/index.php dans le fichier pub/<website> et mettre à jour le répertoire bootstrap path (/../../app/bootstrap.php).

    code language-none
    try {
        require __DIR__ . '/../../app/bootstrap.php';
    } catch (\Exception $e) {
    
  4. Création d’une transmission pour la variable index.php fichier .

    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. Validez et envoyez les fichiers modifiés.

    • pub/<website>/index.php (Si ce fichier se trouve dans la variable .gitignore, la notification push peut nécessiter l’option force .)
    • .magento.app.yaml

Configuration des sites web, des magasins et des vues de magasin

Dans le Interface utilisateur d’administration, configurez votre Adobe Commerce Sites web, Magasins, et Vues du magasin. Voir Configuration de plusieurs sites web, magasins et vues de magasin dans l’administrateur dans le Guide de configuration.

Il est important d’utiliser le même nom et le même code pour vos sites web, magasins et magasins des vues de votre administrateur lors de la configuration de votre installation locale. Vous avez besoin de ces valeurs lorsque vous mettez à jour la variable magento-vars.php fichier .

Modification des variables

Au lieu de configurer un hôte virtuel NGINX, transmettez la variable MAGE_RUN_CODE et MAGE_RUN_TYPE en utilisant la variable magento-vars.php dans le répertoire racine du projet.

Pour transmettre des variables à l’aide de la variable magento-vars.php fichier:

  1. Ouvrez le magento-vars.php dans un éditeur de texte.

    La variable default magento-vars.php fichier doit ressembler à ce qui suit :

    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. Déplacer le commentaire if block afin qu’elle soit after la valeur function et ne commente plus.

    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. Remplacez les valeurs suivantes dans la variable if (isHttpHost("example.com")) block:

    • example.com: avec l’URL de base de votre site web

    • default: avec le CODE unique pour votre site web ou vue de magasin

    • store—avec l’une des valeurs suivantes :

      • website—load la variable site web sur le storefront
      • store—load a vue de magasin sur le storefront

    Pour plusieurs sites utilisant des domaines uniques :

    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";
    }
    

    Pour plusieurs sites avec le même domaine, vous devez vérifier la variable hôte et la variable 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. Enregistrez vos modifications dans le magento-vars.php fichier .

Déploiement et test sur le serveur d’intégration

Envoyez vos modifications à votre Adobe Commerce dans l’environnement d’intégration de l’infrastructure cloud et testez votre site.

  1. Ajoutez, validez et poussez les modifications de code à la branche distante.

    code language-bash
    git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
    
  2. Attendez que le déploiement soit terminé.

  3. Après le déploiement, ouvrez l’URL de votre magasin dans un navigateur web.

    Avec un domaine unique, utilisez le format suivant : http://<magento-run-code>.<site-URL>

    Par exemple, http://french.master-name-projectID.us.magentosite.cloud/

    Avec un domaine partagé, utilisez le format suivant : http://<site-URL>/<magento-run-code>

    Par exemple, http://master-name-projectID.us.magentosite.cloud/french/

  4. Testez minutieusement votre site et fusionnez le code dans la variable integration branche pour un déploiement ultérieur.

Déploiement vers l’évaluation et la production

Suivez le processus de déploiement pour déploiement vers l’évaluation et la production. Pour les environnements Starter et Pro, vous utilisez le Cloud Console pour envoyer du code à l’ensemble des environnements.

Adobe recommande de réaliser des tests complets dans l’environnement d’évaluation avant de passer à l’environnement de production. Apportez des modifications au code dans l’environnement d’intégration et commencez le processus à déployer à nouveau dans tous les environnements.

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