Tôi đã thử nhiều cách để đạt được nhiệm vụ này. Tôi muốn cảm ơn @ matias-hidalgo vì những đóng góp của anh ấy, mặc dù lúc đầu tôi không hiểu câu trả lời của anh ấy :).
Đây là kịch bản. Chúng tôi có hai trang web khác nhau và mỗi trang web có hai chế độ xem cửa hàng khác nhau như sau:
Trang web 1
- Trang web 1 (Thương mại điện tử)
- Trang web 1 (Venda Assistida)
Trang web 2
- Trang web 2 (Thương mại điện tử)
- Trang web 2 (Venda Assistida)
Trong giải pháp của tôi, chúng tôi sẽ thay đổi một số cấu hình trong Magento Admin . Sau đó, chúng tôi sẽ tạo một số thư mục con , và cuối cùng chúng tôi sẽ sửa đổinginx.conf
.
Trước hết, chúng ta cần thực hiện một số thay đổi cấu hình trong Quản trị viên Magento . Chuyển đến Stores
-> Configuration
-> General
-> Web
. Chúng tôi cần thay đổi URL cơ sở cho mỗi lượt xem cửa hàng.
Đối với cấu hình mặc định
Vui lòng cung cấp cấu hình sau cho cấu hình mặc định.
Đối với Trang web 1 (Thương mại điện tử) và Trang web 1 (Venda Assistantida)
Vui lòng cung cấp cấu hình sau cho tất cả các lượt xem trang web của Cửa hàng 1 .
Đối với Trang web 2 (Thương mại điện tử) và Trang web 2 (Venda Assistantida)
Vui lòng cung cấp cấu hình sau cho tất cả các lượt xem trang web của Cửa hàng 2 .
Thứ hai, chúng ta cần tạo website1
và website2
các thư mục trong thư mục /pub
. Trong trận chung kết, bạn nên có các thư mục sau:
MAGENTO_ROOT/pub/website1
MAGENTO_ROOT/pub/website2
Sao chép pub/index.php
tập tin vào các thư mục này. Sau đó, chúng tôi sẽ thực hiện một số thay đổi trong MAGENTO_ROOT/pub/website1/index.php
và MAGENTO_ROOT/pub/website2/index.php
.
Nội dung của MAGENTO_ROOT/pub/website1/index.php
Tôi chỉ thay đổi 3 dòng:
Dòng 1: require __DIR__ . '/../../app/bootstrap.php';
Dòng thứ 2: $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';
Dòng thứ 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);
Đối với lần chạm cuối cùng, chúng tôi cần sửa đổi nginx.conf
trong thư mục MAGENTO_ROOT của bạn. Vui lòng đặt cấu hình sau vào của bạn 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;
}
}
Sau tất cả các cấu hình và sửa đổi này, bạn sẽ có thể sử dụng các trang web làm thư mục con. Tôi hy vọng nó sẽ giúp.