Мы хотели бы создать несколько сайтов в Magento 2. В Официальной документации Magento 2 есть статья на эту тему , но способ, которым они описывают, не подходит для нашего случая.
Они предлагают использовать субдомены для определения различных веб-сайтов, таких как
- website1 .magento-site.com
- website2 .magento-site.com
Мы хотели бы использовать подпапки вместо поддоменов . Чтобы привести пример,
- magento-site.com/ website1
- magento-site.com/ website2
Как мы можем решить эту проблему на веб-сервере Nginx?
Моя конфигурация
Я использую Ubuntu 16.04. Я установил Nginx и не изменил конфигурацию ядра Nginx. Я создал файл magento-site.com.conf
внутри /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;
}
РЕДАКТИРОВАТЬ 1: (2017-10-23)
У меня есть несколько магазинов для каждого сайта.
magento2
nginx
multi-website
Буньямин Инан
источник
источник
Ответы:
Я перепробовал множество способов решить эту задачу. Я хотел бы поблагодарить @ matias-hidalgo за его вклад, хотя я не понял его ответа при первом прочтении :).
Вот сценарий. У нас есть два разных сайта, и у каждого сайта есть два разных вида магазина:
Веб-сайт 1
Веб-сайт 2
В моем решении мы собираемся изменить некоторые настройки в Magento Admin . Затем мы собираемся создать несколько подпапок , и, наконец, мы собираемся изменить
nginx.conf
.Прежде всего, нам нужно внести некоторые изменения в конфигурацию в Magento Admin . Перейти к
Stores
->Configuration
->General
->Web
. Нам нужно изменить базовые URL для каждого вида магазина.Для конфигурации по умолчанию
Пожалуйста, предоставьте следующую конфигурацию для конфигурации по умолчанию.
Для веб-сайта 1 (электронная коммерция) и веб-сайта 1 (Venda Assistida)
Пожалуйста, предоставьте следующую конфигурацию для всех просмотров магазина сайта 1 .
Для сайта 2 (электронная коммерция) и сайта 2 (Venda Assistida)
Пожалуйста, предоставьте следующую конфигурацию для всех просмотров магазина Website 2 .
Во-вторых, нам нужно создать
website1
иwebsite2
папки в/pub
каталоге. В финале у вас должны быть следующие папки:MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Скопируйте
pub/index.php
файл в эти каталоги. Затем мы внесем некоторые изменения вMAGENTO_ROOT/pub/website1/index.php
иMAGENTO_ROOT/pub/website2/index.php
.Содержание
MAGENTO_ROOT/pub/website1/index.php
Я только изменил 3 строки:
1-я строка:
require __DIR__ . '/../../app/bootstrap.php';
2-я строка:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3-я строка:
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
Для последнего штриха нам нужно внести изменения
nginx.conf
в ваш каталог MAGENTO_ROOT. Пожалуйста, поместите следующую конфигурацию в вашnginx.conf
.После всех этих настроек и изменений вы сможете использовать веб-сайты в качестве подпапок. Я надеюсь, что это помогает.
источник
В конфигурации Nginx вы можете использовать этот пример конфигурации:
и используйте этот index.php в качестве примера:
Для уточнения:
В моей конфигурации vhost nginx вы найдете это:
где первая "/ your / subfolder" может быть изменена на любую ссылку в качестве URL-адреса веб-сайта. ex www.mywebsite.com/stack/magento -> / stack / magento
Затем, чтобы определить код сайта, который будет загружен в этот URL, вы должны создать index.php, написав код сайта здесь:
Я надеюсь, что теперь это достаточно ясно, я должен потратить время на проект, чтобы сделать это, поэтому я знаю, что это работает, и это ближе к тому, как мы делали это на M1.
источник
в вашем домене .conf в "etc / nginx" вам нужно создать карту.
например:
или
источник
website1.magento-site.com
, но я хочуmagento-site.com/website1
.map $http_host$uri $MAGE_RUN_CODE
Как насчет чистого решения nginx с этой двойной картой?
Во-первых, для веб-сайта (спасибо @MagenX)
Секунда для нового запроса URI
И, наконец, не забудьте установить новый вычисленный REQUEST_URI
источник