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.
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/
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 :
-
Pour l’évaluation et la production Pro
Ajoutez le nouveau domaine à Fastly, voir Gestion des domainesou ouvrez un ticket d’assistance pour demander de l’aide. En outre, vous devez Envoi d’un ticket d’assistance Adobe Commerce pour demander l’ajout de nouveaux domaines à une grappe.
-
Pour la production de démarrage uniquement
Ajoutez le nouveau domaine à Fastly, voir Gestion des domaines, ou Envoi d’un ticket d’assistance Adobe Commerce pour demander de l’aide. En outre, vous devez ajouter le nouveau domaine au Domaines dans le Cloud Console:
https://<zone>.magento.cloud/projects/<project-ID>/edit
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 :
-
Configuration des itinéraires ou des emplacements: spécifiez la manière dont les URL entrantes sont gérées par Adobe Commerce.
-
Configuration des sites web, des magasins et des vues de magasin: configuration à l’aide de l’interface utilisateur d’administration d’Adobe Commerce
-
Modification des variables: spécifiez les valeurs de la variable
MAGE_RUN_TYPE
etMAGE_RUN_CODE
dans la variablemagento-vars.php
fichier -
Déploiement et test des environnements: déployez et testez le
integration
branche
Mises à jour de configuration des environnements Pro
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:
-
Sur votre poste de travail local, ouvrez le
.magento/routes.yaml
dans un éditeur de texte. -
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"
-
Enregistrez vos modifications dans le
routes.yaml
fichier . -
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:
-
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 ...
-
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 webpassthru
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:
-
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"
-
Créez un sous-répertoire pour le site web sous le
pub
directory:pub/<website>
-
Copiez le
pub/index.php
dans le fichierpub/<website>
et mettre à jour le répertoirebootstrap
path (/../../app/bootstrap.php
).code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) {
-
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 ...
-
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:
-
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; }
-
Déplacer le commentaire
if
block afin qu’elle soit after la valeurfunction
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"; }
-
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 storefrontstore
—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; }
-
-
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.
-
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>
-
Attendez que le déploiement soit terminé.
-
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/
-
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.