Wir möchten mehrere Websites in Magento 2 erstellen. Es gibt einen Artikel zu diesem Thema in der offiziellen Magento 2-Dokumentation , aber die Art und Weise, wie sie beschrieben werden, ist für unseren Fall nicht geeignet.
Sie schlagen vor , zu verwenden , Sub-Domains , um zu verschiedenen Websites zu ermitteln, wie
- website1 .magento-site.com
- website2 .magento-site.com
Wir möchten Unterordner anstelle von Unterdomänen verwenden . Um ein Beispiel zu geben:
- magento-site.com/ website1
- magento-site.com/ website2
Wie können wir dieses Problem auf dem Nginx-Webserver beheben?
Meine Konfiguration
Ich benutze Ubuntu 16.04. Ich habe Nginx installiert und keine Nginx-Kernkonfiguration geändert. Ich habe eine Datei magento-site.com.conf
darin erstellt /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)
Ich habe mehrere Geschäfte für jede Website.
magento2
nginx
multi-website
Bunyamin Inan
quelle
quelle
Antworten:
Ich habe zahlreiche Möglichkeiten ausprobiert, um diese Aufgabe zu erfüllen. Ich möchte mich bei @ matias-hidalgo für seine Beiträge bedanken, obwohl ich seine Antwort beim ersten Lesen nicht verstanden habe :).
Hier ist das Szenario. Wir haben zwei verschiedene Websites und jede Website hat zwei verschiedene Store-Ansichten wie folgt:
Website 1
Website 2
In meiner Lösung werden wir einige Konfigurationen in Magento Admin ändern . Dann werden wir einige Unterordner erstellen und schließlich ändern
nginx.conf
.Zunächst müssen wir einige Konfigurationsänderungen im Magento Admin vornehmen . Gehen Sie zu
Stores
->Configuration
->General
->Web
. Wir müssen die Basis-URLs für jede Geschäftsansicht ändern .Für Standardkonfiguration
Bitte geben Sie die folgende Konfiguration für die Standardkonfiguration an.
Für Website 1 (E-Commerce) und Website 1 (Venda Assistida)
Bitte geben Sie die folgende Konfiguration für alle Website 1- Geschäftsansichten an.
Für Website 2 (E-Commerce) und Website 2 (Venda Assistida)
Bitte geben Sie die folgende Konfiguration für alle Website 2- Store-Ansichten an.
Zweitens müssen wir erstellen
website1
undwebsite2
im Ordner/pub
Verzeichnis. Im Finale sollten Sie die folgenden Ordner haben:MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Kopieren Sie die
pub/index.php
Datei in diese Verzeichnisse. Dann werden wir einige Änderungen inMAGENTO_ROOT/pub/website1/index.php
und vornehmenMAGENTO_ROOT/pub/website2/index.php
.Inhalt von
MAGENTO_ROOT/pub/website1/index.php
Ich habe nur 3 Zeilen geändert:
1. Zeile:
require __DIR__ . '/../../app/bootstrap.php';
2. Zeile:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3. Zeile:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
Für den letzten Schliff müssen wir
nginx.conf
in Ihrem MAGENTO_ROOT-Verzeichnis Änderungen vornehmen. Bitte geben Sie die folgende Konfiguration in Ihre einnginx.conf
.Nach all diesen Konfigurationen und Änderungen können Sie Websites als Unterordner verwenden. Ich hoffe, es hilft.
quelle
Mit der Nginx-Konfiguration können Sie diese Beispielkonfiguration verwenden:
und verwenden Sie diese index.php als Beispiel:
Um zu verdeutlichen:
In meiner vhost nginx Konfiguration finden Sie Folgendes:
Hier kann der erste "/ your / subfolder" für eine beliebige Website-URL geändert werden. ex www.mywebsite.com/stack/magento -> / stack / magento
Um den Website-Code zu definieren, der in diese URL geladen wird, müssen Sie die index.php erstellen und den Website-Code hier schreiben:
Ich hoffe, das ist jetzt klar genug. Ich muss Zeit in einem Projekt verbringen, um dies zu erreichen, damit ich weiß, dass es funktioniert und es näher ist, wie wir es früher auf M1 gemacht haben.
quelle
In Ihrer domain.conf in "etc / nginx" müssen Sie eine Karte erstellen.
zum Beispiel:
oder
quelle
website1.magento-site.com
, aber ich willmagento-site.com/website1
.map $http_host$uri $MAGE_RUN_CODE
Was ist mit einer reinen Nginx-Lösung mit dieser Doppelkarte?
Zunächst für die Website (danke @MagenX)
Eine Sekunde für die neue Anfrage uri
Und vergessen Sie nicht, den neu berechneten REQUEST_URI festzulegen
quelle