Я випробував численні способи досягнення цього завдання. Я хотів би подякувати @ matias-hidalgo за його внесок, хоча я не зрозумів його відповіді на першому читанні :).
Ось сценарій. У нас є два різних веб-сайти, і кожен веб-сайт має два різних перегляди магазину таким чином:
Веб-сайт 1
- Веб-сайт 1 (Електронна комерція)
- Веб-сайт 1 (Venda Assistida)
Веб-сайт 2
- Веб-сайт 2 (Електронна комерція)
- Веб-сайт 2 (Venda Assistida)
У своєму рішенні ми збираємося змінити певну конфігурацію в Magento Admin . Тоді ми збираємося створити кілька підпапок , і нарешті ми будемо змінюватиnginx.conf
.
Перш за все, нам потрібно внести деякі зміни конфігурації в Magento Admin . Перейдіть до Stores
-> Configuration
-> General
-> Web
. Потрібно змінити базові URL-адреси для кожного перегляду магазину.
Для конфігурації за замовчуванням
Введіть наступну конфігурацію для конфігурації за замовчуванням.
Для веб-сайту 1 (електронна комерція) та веб-сайту 1 (Venda Assistida)
Будь ласка, надайте таку конфігурацію для всіх переглядів магазину на веб-сайті 1 .
Для веб-сайту 2 (електронна комерція) та веб-сайту 2 (Venda Assistida)
Будь ласка, надайте таку конфігурацію для всіх переглядів магазину на веб-сайті 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';
<?php
/**
* Public alias for the application entry point
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
use Magento\Framework\App\Bootstrap;
use Magento\Framework\App\Filesystem\DirectoryList;
try {
require __DIR__ . '/../../app/bootstrap.php';
} catch (\Exception $e) {
echo <<<HTML
<div style="font:12px/1.35em arial, helvetica, sans-serif;">
<div style="margin:0 0 25px 0; border-bottom:1px solid #ccc;">
<h3 style="margin:0;font-size:1.7em;font-weight:normal;text-transform:none;text-align:left;color:#2f2f2f;">
Autoload error</h3>
</div>
<p>{$e->getMessage()}</p>
</div>
HTML;
exit(1);
}
$params = $_SERVER;
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [
DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
];
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);
Для остаточного дотику нам потрібно внести зміни nginx.conf
до вашого каталогу MAGENTO_ROOT. Будь ласка , поставте наступну конфігурацію в ваш nginx.conf
.
location /website1 {
root /website1;
if (!-e $request_filename) {
rewrite ^/(.*)$ /website1/index.php last;
break;
}
}
location /website2 {
root /website2;
if (!-e $request_filename) {
rewrite ^/(.*)$ /website2/index.php last;
break;
}
}
Після всіх цих конфігурацій та модифікацій ви зможете використовувати веб-сайти як підпапки. Я сподіваюся, що це допомагає.