He intentado numerosas formas de lograr esta tarea. Me gustaría agradecer a @ matias-hidalgo por sus contribuciones, aunque no entendí su respuesta en la primera lectura :).
Aquí está el escenario. Tenemos dos sitios web diferentes, y cada sitio web tiene dos vistas diferentes de la tienda de la siguiente manera:
Sitio web 1
- Sitio web 1 (comercio electrónico)
- Sitio web 1 (Venda Assistida)
Sitio web 2
- Sitio web 2 (comercio electrónico)
- Sitio web 2 (Venda Assistida)
En mi solución, vamos a cambiar alguna configuración en Magento Admin . Luego vamos a crear algunas subcarpetas , y finalmente vamos a modificarnginx.conf
.
En primer lugar, debemos realizar algunos cambios de configuración en el Administrador de Magento . Vaya a Stores
-> Configuration
-> General
-> Web
. Necesitamos cambiar las URL base para cada vista de la tienda.
Para la configuración predeterminada
Proporcione la siguiente configuración para la configuración predeterminada.
Para el sitio web 1 (comercio electrónico) y el sitio web 1 (Venda Assistida)
Proporcione la siguiente configuración para todas las vistas de la tienda del sitio web 1 .
Para el sitio web 2 (comercio electrónico) y el sitio web 2 (Venda Assistida)
Proporcione la siguiente configuración para todas las vistas de la tienda del sitio web 2 .
En segundo lugar, necesitamos crear website1
y website2
carpetas en el /pub
directorio. En la final, debe tener las siguientes carpetas:
MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Copie el pub/index.php
archivo en estos directorios. Luego haremos algunos cambios en MAGENTO_ROOT/pub/website1/index.php
y MAGENTO_ROOT/pub/website2/index.php
.
Contenido de MAGENTO_ROOT/pub/website1/index.php
Solo he cambiado 3 líneas:
1ra línea: require __DIR__ . '/../../app/bootstrap.php';
2da línea: $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3ra línea: $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);
Para el toque final, necesitamos modificar nginx.conf
en su directorio MAGENTO_ROOT. Ponga la siguiente configuración en su 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;
}
}
Después de todas estas configuraciones y modificaciones, podrá utilizar sitios web como subcarpetas. Espero que ayude.