Nous aimerions créer plusieurs sites Web dans Magento 2. Il y a un article sur ce sujet dans la documentation officielle de Magento 2 , mais la façon dont ils décrivent ne convient pas à notre cas.
Ils suggèrent d'utiliser des sous-domaines afin de déterminer différents sites Web, tels que
- website1 .magento-site.com
- website2 .magento-site.com
Nous aimerions utiliser des sous-dossiers au lieu de sous-domaines . Pour donner un exemple,
- magento-site.com/ website1
- magento-site.com/ website2
Comment pouvons-nous surmonter ce problème sur le serveur Web Nginx?
Ma configuration
J'utilise Ubuntu 16.04. J'ai installé Nginx et je n'ai modifié aucune configuration principale de Nginx. J'ai créé un fichier à l' magento-site.com.conf
intérieur /etc/nginx/sites-enabled/magento-site.com.conf
.
/etc/nginx/sites-enabled/magento-site.com.conf
server {
listen 8080;
server_name magento-site.com;
set $MAGE_RUN_CODE website1;
set $MAGE_ROOT /var/www/magento-site.com;
include /var/www/magento-site.com/nginx.conf;
}
EDIT 1: (2017-10-23)
J'ai plusieurs magasins pour chaque site Web.
magento2
nginx
multi-website
Bunyamin Inan
la source
la source
Réponses:
J'ai essayé de nombreuses façons d'accomplir cette tâche. Je tiens à remercier @ matias-hidalgo pour ses contributions, même si je n'ai pas compris sa réponse à la première lecture :).
Voici le scénario. Nous avons deux sites Web différents, et chaque site Web a deux vues de magasin différentes comme suit:
Site Web 1
Site Web 2
Dans ma solution, nous allons changer une configuration dans Magento Admin . Ensuite, nous allons créer des sous-dossiers , et enfin nous allons modifier
nginx.conf
.Tout d'abord, nous devons apporter des modifications à la configuration dans Magento Admin . Allez dans
Stores
->Configuration
->General
->Web
. Nous devons modifier les URL de base pour chaque vue de magasin.Pour la configuration par défaut
Veuillez fournir la configuration suivante pour la configuration par défaut.
Pour le site Web 1 (commerce électronique) et le site Web 1 (Venda Assistida)
Veuillez fournir la configuration suivante pour toutes les vues du magasin du site Web 1 .
Pour le site Web 2 (commerce électronique) et le site Web 2 (Venda Assistida)
Veuillez fournir la configuration suivante pour toutes les vues de magasin du site Web 2 .
En second lieu , nous devons créer
website1
etwebsite2
dossiers dans le/pub
répertoire. Au final, vous devriez avoir les dossiers suivants:MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Copiez le
pub/index.php
fichier dans ces répertoires. Ensuite, nous apporterons quelques modifications dansMAGENTO_ROOT/pub/website1/index.php
etMAGENTO_ROOT/pub/website2/index.php
.Contenu de
MAGENTO_ROOT/pub/website1/index.php
Je n'ai changé que 3 lignes:
1ère ligne:
require __DIR__ . '/../../app/bootstrap.php';
2e ligne:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3e ligne:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
Pour la touche finale, nous devons modifier
nginx.conf
dans votre répertoire MAGENTO_ROOT. Veuillez mettre la configuration suivante dans votrenginx.conf
.Après toutes ces configurations et modifications, vous pourrez utiliser des sites Web comme sous-dossiers. J'espère que ça aide.
la source
Par la configuration Nginx, vous pouvez utiliser cet exemple de configuration:
et utilisez ce index.php comme exemple:
Afin de clarifier:
Dans ma configuration vhost nginx, vous trouverez ceci:
où le premier "/ votre / sous-dossier" peut être modifié pour ce que vous voulez comme URL de site Web. ex www.mywebsite.com/stack/magento -> / stack / magento
Ensuite, afin de définir le code du site Web qui sera chargé dans cette URL, vous devez créer le fichier index.php en écrivant le code du site Web ici:
J'espère que c'est maintenant assez clair, je dois passer du temps dans un projet pour y arriver, donc je sais que cela fonctionne et c'est plus proche de la façon dont nous le faisions sur M1.
la source
dans votre domain.conf dans "etc / nginx", vous devez créer une carte.
par exemple:
ou
la source
website1.magento-site.com
, mais je veuxmagento-site.com/website1
.map $http_host$uri $MAGE_RUN_CODE
Qu'en est-il d'une solution nginx pure avec cette double carte?
Tout d'abord, pour le site Web (merci @MagenX)
Une seconde pour la nouvelle demande uri
Et enfin, n'oubliez pas de définir la nouvelle REQUEST_URI calculée
la source