Magento 2: Nhiều trang web và cửa hàng trên máy chủ apache hoặc nginx


8

Tôi biết câu hỏi này có thể đã được hỏi trước đây nhưng tôi đã theo nhiều liên kết tham khảo, nhưng tôi không thể làm điều này vì vậy hãy giúp tôi đạt được nó.
URL cơ sở = http://127.0.0.1/magento22/

1) Tạo một trang web trong Magento với 4 ngôn ngữ

  • Đức (Đức)
  • Pháp (tiếng Pháp)
  • Nederland (Hà Lan)
  • Switzerland swiss)

2) Thay đổi mã trong index.php

<?php
/**
 * Application entry point
 *
 * Example - run a particular store or website:
 * --------------------------------------------
 * require __DIR__ . '/app/bootstrap.php';
 * $params = $_SERVER;
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website2';
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
 * $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);
 * --------------------------------------------
 *
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

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;
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
switch ($actual_link) 
{
    case 'http://127.0.0.1/magento22/deutschland/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'deutschland'; 
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; 
        break; 
    case 'http://127.0.0.1/magento22/france/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'france'; 
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; 
         echo "11";
        break; 
    case 'http://127.0.0.1/magento22/nederland/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'nederland'; 
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; 
        break; 
    case 'http://127.0.0.1/magento22/switzerland/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'switzerland'; 
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; 
        break; 
    case 'http://127.0.0.1/magento22/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'base'; 
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website'; 
        break;     
    default: 
        $params = $_SERVER;
        break; 

}

$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);

Bạn có chỉ định URL trang web trong quản trị viên theo trang web không?
Suresh Chikani

vâng tôi đã gán url theo index.php. @SureshChikani
Kushal

Trên mã làm việc hay không theo trang web?
Suresh Chikani

Nếu tôi chạy 127.0.0.1/magento22/deutschland url này hơn mã google của trang web này, nhưng trang 404 sẽ hiển thị và nếu tôi nhấp vào bất kỳ liên kết nào, nó sẽ chuyển hướng đến liên kết cơ sở 127.0.0.1/magento22
Kushal

Câu trả lời:


6

Tạo nhiều trang web trong magento, Các bước để tạo nhiều trang trong bảng quản trị cũng giống như trong magento1.x. Đừng quên thay đổi url cơ sở và url bảo mật cho trang web / cửa hàng mới. Sau khi thực hiện thay đổi trong bảng quản trị, hãy làm theo các bước dưới đây,

1) Tạo thư mục mới trong root magento và sao chép index.php.htaccesscác tệp từ root magento sang thư mục mới.

2) Chỉnh sửa cái index.phpcó trong thư mục mới

Thay thế:

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);

/** @var \Magento\Framework\App\Http $app */

$app = $bootstrap->createApplication('Magento\Framework\App\Http');

$bootstrap->run($app);

Với:

 $params = $_SERVER;

 $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'newstore'; //Webite code as same in admin panel

 $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';

 $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);

 /** @var \Magento\Framework\App\Http $app */

 $app = $bootstrap->createApplication('Magento\Framework\App\Http');

 $bootstrap->run($app);

Và cũng cập nhật bootstrap.php bao gồm đường dẫn như dưới đây,

Thay thế:

require __DIR__ . '/app/bootstrap.php';

Với:

require __DIR__ . '/../app/bootstrap.php';

3) Tạo một liên kết trong thư mục mới

 ln -s /home/example/example.com/html/app/ app 

 ln -s /home/example/example.com/html/lib/ lib 

 ln -s /home/example/example.com/html/pub/ pub 

 ln -s /home/example/example.com/html/var/ var 

Tham khảo cái này

Vui lòng xóa các var/generation,var/cache and pub/statictập tin và thực hiện triển khai nội dung tĩnh.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Bước cuối cùng: -store-> configure-> general-> web-> chọn chế độ xem cửa hàng và thêm URL cơ sở cho mỗi Cửa hàng


3) Tạo một liên kết trong thư mục mới, tôi phải sao chép ứng dụng, lib, pub và var trong thư mục mới?
Kushal


Tôi không thể hiểu simlinks nơi tôi phải làm điều này suy nghĩ.
Kushal

thật đơn giản trước tiên bạn chỉ có 2 trang web tạo và kiểm tra.
Ravindrasinh Zala

kiểm tra hình ảnh cập nhật
Ravindrasinh Zala

1

Nếu máy chủ là NGINX thì hãy làm theo các bước dưới đâ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 đổi nginx.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 Cửa hàng -> Cấu hình -> Chung -> 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.

nhập mô tả hình ảnh ở đây

Đố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.

nhập mô tả hình ảnh ở đây

Đố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.

nhập mô tả hình ảnh ở đây

Thứ hai, chúng ta cần tạo các thư mục website1 và website2 trong thư mục / pub. Trong trận chung kết, bạn nên có các thư mục sau:

  • MAGENTO_ROOT / quán rượu / trang web1
  • MAGENTO_ROOT / quán rượu / trang web2

Sao chép tệp pub / index.php 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 nginx.conf của bạn.

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.


Xin chào Jaimin, tôi có thể lấy tài liệu cho Tạo magento 2.3 Cửa hàng đa phương tiện trong Wamp Localhost
zus

Tôi đã làm một số thứ không may là nó không hoạt động, My Work: 1) Tạo thư mục mới trong thư mục gốc như mymage2 / usa trong thư mục usa tạo symlink của app, pub.lib, var cùng với tệp index.php và .htaccess. 2) index.php -> justpaste.it/3na92 .htaccess tệp -> justpaste.it/39kyr tôi có thể nhận trợ giúp không?
zus

0

Kiểm tra với mã dưới đây

<?php
/**
 * Application entry point
 *
 * Example - run a particular store or website:
 * --------------------------------------------
 * require __DIR__ . '/app/bootstrap.php';
 * $params = $_SERVER;
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website2';
 * $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
 * $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);
 * --------------------------------------------
 *
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

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[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'],
];

//$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
switch ($_SERVER['HTTP_HOST'])
{
    case 'http://127.0.0.1/magento22/deutschland/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'deutschland';
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
        break;
    case 'http://127.0.0.1/magento22/france/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'france';
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
        echo "11";
        break;
    case 'http://127.0.0.1/magento22/nederland/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'nederland';
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
        break;
    case 'http://127.0.0.1/magento22/switzerland/':
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'switzerland';
        $params[\Magento\Store\Model\StoreManager::PARAM_RUN_TYPE] = 'website';
        break;
}

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);
$bootstrap->run($app);

Tôi muốn sử dụng cùng phương tiện, quán rượu, xem tĩnh.
Kushal

Vui lòng kiểm tra với mã này.
Suresh Chikani

Vui lòng kiểm tra nó với mã cập nhật của tôi.
Suresh Chikani

Uncaught Error: Class 'Bootstrap' không được tìm thấy trong /var/www/html/magento22/index.php:36
Kushal

với mã này $ _SERVER ['HTTP_HOST'], tôi có thể nhận được 127.0.0.1
Kushal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.