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);
Kushal
quelle
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

Ravindrasinh Zala
quelle
3) Erstellen Sie einen Simlink im neuen Ordner. Muss ich meine App, lib, pub und var in den neuen Ordner kopieren?
Kushal
docs.nexcess.net/article/…
Ravindrasinh Zala
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.

Jaimin
quelle
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);
Suresh Chikani
quelle
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