Я перепробовал множество способов решить эту задачу. Я хотел бы поблагодарить @ matias-hidalgo за его вклад, хотя я не понял его ответа при первом прочтении :).
Вот сценарий. У нас есть два разных сайта, и у каждого сайта есть два разных вида магазина:
Веб-сайт 1
- Веб-сайт 1 (электронная коммерция)
- Веб-сайт 1 (Венда Ассистида)
Веб-сайт 2
- Веб-сайт 2 (электронная коммерция)
- Веб-сайт 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';
<?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;
}
}
После всех этих настроек и изменений вы сможете использовать веб-сайты в качестве подпапок. Я надеюсь, что это помогает.