J'ai essayé de nombreuses façons d'accomplir cette tâche. Je tiens à remercier @ matias-hidalgo pour ses contributions, même si je n'ai pas compris sa réponse à la première lecture :).
Voici le scénario. Nous avons deux sites Web différents, et chaque site Web a deux vues de magasin différentes comme suit:
Site Web 1
- Site Web 1 (commerce électronique)
- Site Web 1 (Venda Assistida)
Site Web 2
- Site Web 2 (commerce électronique)
- Site Web 2 (Venda Assistida)
Dans ma solution, nous allons changer une configuration dans Magento Admin . Ensuite, nous allons créer des sous-dossiers , et enfin nous allons modifiernginx.conf
.
Tout d'abord, nous devons apporter des modifications à la configuration dans Magento Admin . Allez dans Stores
-> Configuration
-> General
-> Web
. Nous devons modifier les URL de base pour chaque vue de magasin.
Pour la configuration par défaut
Veuillez fournir la configuration suivante pour la configuration par défaut.
Pour le site Web 1 (commerce électronique) et le site Web 1 (Venda Assistida)
Veuillez fournir la configuration suivante pour toutes les vues du magasin du site Web 1 .
Pour le site Web 2 (commerce électronique) et le site Web 2 (Venda Assistida)
Veuillez fournir la configuration suivante pour toutes les vues de magasin du site Web 2 .
En second lieu , nous devons créer website1
et website2
dossiers dans le /pub
répertoire. Au final, vous devriez avoir les dossiers suivants:
MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Copiez le pub/index.php
fichier dans ces répertoires. Ensuite, nous apporterons quelques modifications dans MAGENTO_ROOT/pub/website1/index.php
et MAGENTO_ROOT/pub/website2/index.php
.
Contenu de MAGENTO_ROOT/pub/website1/index.php
Je n'ai changé que 3 lignes:
1ère ligne: require __DIR__ . '/../../app/bootstrap.php';
2e ligne: $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
3e ligne: $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);
Pour la touche finale, nous devons modifier nginx.conf
dans votre répertoire MAGENTO_ROOT. Veuillez mettre la configuration suivante dans votre 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;
}
}
Après toutes ces configurations et modifications, vous pourrez utiliser des sites Web comme sous-dossiers. J'espère que ça aide.