Magento 2: Mehrere Websites und Speicher auf Apache- oder Nginx-Servern


8

Ich weiß, dass diese Frage möglicherweise bereits gestellt wurde, aber ich bin vielen Referenzlinks gefolgt, aber ich kann diese Sache nicht tun. Bitte helfen Sie mir, sie zu erreichen.
Basis-URL = http://127.0.0.1/magento22/

1) Erstellen Sie eine Site in Magento mit 4 Sprachen

  • Deutschland
  • Francais (französisch)
  • Nederland (Niederländisch)
  • Schweiz Schweizer)

2) Ändern Sie den Code in 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);

Haben Sie eine Website-URL in admin gemäß Website zugewiesen?
Suresh Chikani

Ja, ich habe eine URL gemäß index.php zugewiesen. @ SureshChikani
Kushal

Über Code funktioniert oder nicht wie auf der Website?
Suresh Chikani

Wenn ich 127.0.0.1/magento22/deutschland ausführe, ändert sich diese URL als Google-Code dieser Website, aber die Anzeige auf 404 Seiten und wenn ich auf einen der Links
klicke, wird

Antworten:


6

Die Schritte zum Erstellen eines Multistores im Admin-Bereich wurden in Magento1.x erstellt. Vergessen Sie nicht, die Basis-URL und die sichere URL für eine neue Website / einen neuen Shop zu ändern. Sobald Sie Änderungen im Admin-Bereich vorgenommen haben, führen Sie die folgenden Schritte aus:

1) Erstellen Sie einen neuen Ordner im Magento-Stammverzeichnis und kopieren Sie die Dateien index.phpund .htaccessaus dem Magento-Stammverzeichnis in einen neuen Ordner.

2) Bearbeiten Sie den index.phpOrdner, der sich in einem neuen Ordner befindet

Ersetzen:

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

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

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

$bootstrap->run($app);

Mit:

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

Und aktualisieren Sie auch den Bootstrap.php-Include-Pfad wie folgt:

Ersetzen:

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

Mit:

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

3) Erstellen Sie einen Simlink im neuen Ordner

 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 

Verweisen Sie darauf

Bitte löschen Sie die var/generation,var/cache and pub/staticDateien und führen Sie die Bereitstellung des statischen Inhalts durch.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Letzter Schritt: -store-> configuration-> general-> web-> Store-Ansicht auswählen und Basis-URL für jeden Store hinzufügen


3) Erstellen Sie einen Simlink im neuen Ordner. Muss ich meine App, lib, pub und var in den neuen Ordner kopieren?
Kushal


Ich kann Simlinks nicht verstehen, wo ich diesen Gedanken machen muss.
Kushal

Es ist einfach, zuerst erstellen und überprüfen Sie nur 2 Websites.
Ravindrasinh Zala

Überprüfen Sie das Update-Bild
Ravindrasinh Zala

1

Wenn der Server NGINX ist, befolgen Sie die folgenden Schritte.

Hier ist das Szenario. Wir haben zwei verschiedene Websites und jede Website hat zwei verschiedene Store-Ansichten wie folgt:

Website 1

  • Website 1 (E-Commerce)
  • Website 1 (Venda Assistida)

Website 2

  • Website 2 (E-Commerce)

  • Website 2 (Venda Assistida)

In meiner Lösung werden wir einige Konfigurationen in Magento Admin ändern. Dann werden wir einige Unterordner erstellen und schließlich die Datei nginx.conf ändern.

Zunächst müssen wir einige Konfigurationsänderungen im Magento Admin vornehmen. Gehen Sie zu Stores -> Configuration -> General -> Web. Wir müssen die Basis-URLs für jede Geschäftsansicht ändern.

Für die Standardkonfiguration Bitte geben Sie die folgende Konfiguration für die Standardkonfiguration an.

Geben Sie hier die Bildbeschreibung ein

Für Website 1 (E-Commerce) und Website 1 (Venda Assistida)

Bitte geben Sie die folgende Konfiguration für alle Website 1-Geschäftsansichten an.

Geben Sie hier die Bildbeschreibung ein

Für Website 2 (E-Commerce) und Website 2 (Venda Assistida)

Bitte geben Sie die folgende Konfiguration für alle Website 2-Store-Ansichten an.

Geben Sie hier die Bildbeschreibung ein

Zweitens müssen wir die Ordner website1 und website2 im Verzeichnis / pub erstellen. Im Finale sollten Sie folgende Ordner haben:

  • MAGENTO_ROOT / pub / website1
  • MAGENTO_ROOT / pub / website2

Kopieren Sie die Datei pub / index.php in diese Verzeichnisse. Dann werden wir einige Änderungen in MAGENTO_ROOT/pub/website1/index.php und vornehmenMAGENTO_ROOT/pub/website2/index.php.

Inhalt von MAGENTO_ROOT/pub/website1/index.php Ich habe nur 3 Zeilen geändert:

1. Zeile: require __DIR__ . '/../../app/bootstrap.php';

2. Zeile: $params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE] = 'website1';

3. Zeile: $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);

Für den letzten Schliff müssen wir die Datei nginx.conf in Ihrem Verzeichnis MAGENTO_ROOT ändern. Bitte fügen Sie die folgende Konfiguration in Ihre nginx.conf ein.

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;
    }
}

Nach all diesen Konfigurationen und Änderungen können Sie Websites als Unterordner verwenden.


Hallo Jaimin, kann ich Dokumente für Create Magento 2.3 Multi Store in Wamp Localhost bekommen
zus

Ich habe einige Sachen gemacht, leider funktioniert es nicht. Meine Arbeit: 1) Erstellt einen neuen Ordner im Stammordner wie mymage2 / usa im usa-Ordner erstellt Symlinks von App, pub.lib, var zusammen mit index.php und .htaccess-Datei. 2) index.php -> justpaste.it/3na92 .htaccess-Datei -> justpaste.it/39kyr Kann ich Hilfe bekommen?
zus

0

Überprüfen Sie mit dem folgenden Code

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

Ich möchte die gleichen Medien, Pub, statische Ansicht verwenden.
Kushal

Bitte überprüfen Sie mit diesem Code.
Suresh Chikani

Bitte überprüfen Sie es mit meinem aktualisierten Code.
Suresh Chikani

Nicht erfasster Fehler: Klasse 'Bootstrap' nicht in /var/www/html/magento22/index.php:36 gefunden
Kushal

Mit diesem Code $ _SERVER ['HTTP_HOST'] kann ich 127.0.0.1
Kushal
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.