複数のweb サイトや店舗の設定

Adobe Commerceでは、英語ストア、フランス語ストア、ドイツ語ストアなど、複数のweb サイトやストアを設定できます。 Web サイト、ストア、ストアビューについてを参照してください。

WARNING
web サイトや実店舗の数が増えるにつれて、カタログデータは増加します。 プロジェクトのアーキテクチャによっては、追加のストアを使用すると、インデックス作成プロセスが長くなり、キャッシュされていないカタログページの応答時間が遅くなる可能性があります。 Adobeでは、サイトのパフォーマンスを詳細に監視することをお勧めします。

複数のストアを設定するプロセスは、一意のドメインと共有ドメインのどちらを使用するかを選択します。

一意のドメインを持つ複数のストア:

https://first.store.com/
https://second.store.com/

同じドメインを持つ複数のストア:

https://store.com/first/
https://store.com/second/
TIP
サイトベース URLにストアビューを追加するには、複数のディレクトリを作成する必要はありません。 設定ガイド​の「​ ストアコードをベース URLに追加する」を参照してください。

ドメインの追加

カスタムドメインは、Pro ステージング環境および実稼動環境に追加できます。統合環境に追加することはできません。

ドメインを追加するプロセスは、クラウドアカウントの種類によって異なります。

  • プロ向けステージングと本番用

    新しいドメインをFastlyに追加するか、​ ドメインの管理を参照するか、サポートチケットを開いてサポートをリクエストしてください。 さらに、クラスターに新しいドメインを追加するには、Adobe Commerce サポートチケット ​を送信する必要があります。

  • スタータープロダクションのみ

    新しいドメインをFastlyに追加します。サポートをリクエストするには、​ ドメインの管理またはAdobe Commerce サポートチケットの送信を参照してください。 さらに、Cloud Consoleの​ドメイン タブに新しいドメインを追加する必要があります:https://<zone>.magento.cloud/projects/<project-ID>/edit

ローカルインストールの設定

複数のストアを使用するようにローカルインストールを設定するには、設定ガイド​の複数のweb サイトまたはストア ​を参照してください。

複数のストアを使用するローカルインストールを正常に作成してテストしたら、統合環境を準備する必要があります。

  1. ルートまたは場所を設定 – 受信URLをAdobe Commerceで処理する方法を指定します

  2. Web サイト、ストア、ストアビューを設定する—Adobe Commerce管理UIを使用して設定します

  3. 変数を変更 - magento-vars.php ファイルのMAGE_RUN_TYPE変数とMAGE_RUN_CODE変数の値を指定します

  4. 環境のデプロイとテスト - integration ブランチのデプロイとテスト

TIP
ローカル環境を使用して、複数のweb サイトまたはストアを設定できます。 複数のweb サイトまたはストアを設定する方法については、Cloud Dockerの手順を参照してください。

Pro環境の設定の更新

WARNING
一部の​ Pro プロジェクト ​では、routes.yaml ファイルのルート設定と.magento.app.yaml ファイルのcron設定を更新するために、Adobe サポートの支援が必要です。 Adobeでは、まず統合環境でYAML設定の変更をすべて行って検証し、その後ステージング環境にデプロイすることをお勧めします。
変更が再デプロイ後にステージングサイトに反映されず、ログに関連するエラーメッセージが表示されない場合は、Adobe Commerce サポートチケット 🔗​送信する必要があります。 チケットで、試した設定の変更を明確に説明し、更新されたYAML設定ファイルをチケットに添付します。

個別のドメインのルートの設定

ルートは、受信URLを処理する方法を定義します。 一意のドメインを持つ複数のストアでは、routes.yaml ファイルで各ドメインを定義する必要があります。 ルートの設定方法は、サイトの操作方法によって異なります。

統合環境でルートを設定するには:

  1. ローカル ワークステーションで、テキスト エディターで.magento/routes.yaml ファイルを開きます。

  2. ドメインとサブドメインを定義します。 mymagento アップストリーム値は、.magento.app.yaml ファイルのname プロパティと同じ値です。

    code language-yaml
    "http://{default}/":
        type: upstream
        upstream: "mymagento:http"
    
    "http://<second-site>.{default}/":
        type: upstream
        upstream: "mymagento:http"
    
  3. routes.yaml ファイルに変更を保存します。

  4. 引き続きWeb サイト、ストア、ストアビューの設定を行います。

共有ドメインの場所の設定

ルート設定がURLの処理方法を定義する場合、.magento.app.yaml ファイルのweb プロパティは、アプリケーションをWebに公開する方法を定義します。 Web locations​では、受信リクエストをより詳細に指定できます。 例えば、ドメインがstore.comの場合、ドメインを共有する2つの異なるストアへのリクエストに/first (デフォルトのサイト)と/secondを使用できます。

新しいWebの場所を設定するには:

  1. ルート (/)のエイリアスを作成します。 この例では、エイリアスは3行目の&appです。

    code language-yaml
    web:
        locations:
            "/": &app
                # The public directory of the app, relative to its root.
                root: "pub"
                passthru: "/index.php"
                index:
                - index.php
                ...
    
  2. Web サイト (/website)のパススルーを作成し、前の手順のエイリアスを使用してルートを参照します。

    エイリアスを使用すると、websiteはルートの場所から値にアクセスできます。 この例では、web サイト passthruは21行目にあります。

    code language-yaml
    web:
        locations:
            "/": &app
                # The public directory of the app, relative to its root.
                root: "pub"
                passthru: "/index.php"
                index:
                - index.php
                ...
            "/media":
                root: "pub/media"
                ...
            "/static":
                root: "pub/static"
                allow: true
                scripts: false
                passthru: "/front-static.php"
                rules:
                    ^/static/version\d+/(?<resource>.*)$:
                        passthru: "/static/$resource"
            "/<website>": *app
              ...
    

別のディレクトリを使用して場所を設定するには:

  1. ルート (/)と静的(/static)の場所のエイリアスを作成します。

    code language-yaml
    web:
        locations:
            "/": &root
                # The public directory of the app, relative to its root.
                root: "pub"
                passthru: "/index.php"
                index:
                - index.php
                ...
            "/static": &static
                root: "pub/static"
    
  2. pub ディレクトリの下にweb サイトのサブディレクトリを作成します:pub/<website>

  3. pub/index.php ファイルをpub/<website> ディレクトリにコピーし、bootstrap パス (/../../app/bootstrap.php)を更新します。

    code language-none
    try {
        require __DIR__ . '/../../app/bootstrap.php';
    } catch (\Exception $e) {
    
  4. index.php ファイルのパススルーを作成します。

    code language-yaml
    web:
        locations:
            "/": &root
                # The public directory of the app, relative to its root.
                root: "pub"
                passthru: "/index.php"
                index:
                - index.php
                ...
            "/media":
                root: "pub/media"
                ...
            "/static": &static
                root: "pub/static"
                allow: true
                scripts: false
                passthru: "/front-static.php"
                rules:
                    ^/static/version\d+/(?<resource>.*)$:
                        passthru: "/static/$resource"
            "/<website>":
                <<: *root
                passthru: "<website>/index.php"
            "/<website>/static": *static
              ...
    
  5. 変更したファイルをコミットしてプッシュします。

    • pub/<website>/index.php (このファイルが.gitignoreにある場合、プッシュには強制オプションが必要になる場合があります)。
    • .magento.app.yaml

Web サイト、ストア、ストアビューを設定する

管理UI​で、Adobe Commerce Web サイトストアストアビュー​を設定します。 設定ガイド​の「🔗管理者に複数のweb サイト、ストア、ストアビューを設定する」を参照してください。

ローカルインストールを設定する際には、管理者から表示されるweb サイト、ストア、ストアビューの同じ名前とコードを使用することが重要です。 magento-vars.php ファイルを更新する際には、これらの値が必要です。

変数を変更

NGINX仮想ホストを設定する代わりに、プロジェクトルートディレクトリのmagento-vars.php ファイルを使用してMAGE_RUN_CODE変数とMAGE_RUN_TYPE変数を渡します。

magento-vars.php ファイルを使用して変数を渡すには:

  1. テキストエディターでmagento-vars.php ファイルを開きます。

    ​ デフォルトのmagento-vars.php ファイル ​は次のようになります。

    code language-php
    <?php
    // enable, adjust and copy this code for each store you run
    // Store #0, default one
    //if (isHttpHost("example.com")) {
    //    $_SERVER["MAGE_RUN_CODE"] = "default";
    //    $_SERVER["MAGE_RUN_TYPE"] = "store";
    //}
    function isHttpHost($host)
    {
        if (!isset($_SERVER['HTTP_HOST'])) {
            return false;
        }
        return $_SERVER['HTTP_HOST'] === $host;
    }
    
  2. コメントされたif ブロックを移動して、function ブロックの​ ​になり、コメントが解除されるようにします。

    code language-php
    <?php
    // enable, adjust and copy this code for each store you run
    // Store #0, default one
    
    function isHttpHost($host)
    {
        if (!isset($_SERVER['HTTP_HOST'])) {
            return false;
        }
        return $_SERVER['HTTP_HOST'] ===  $host;
    }
    
    if (isHttpHost("example.com")) {
        $_SERVER["MAGE_RUN_CODE"] = "default";
        $_SERVER["MAGE_RUN_TYPE"] = "store";
    }
    
  3. if (isHttpHost("example.com")) ブロック内の次の値を置き換えます。

    • example.com - web サイト​のベース URL

    • default – お客様の​ web サイト ​または​ ストアビュー ​の一意のコード

    • store – 次のいずれかの値を持つ:

      • website - ストアフロントに​ web サイト ​を読み込みます
      • store - ストアフロントに​ ストアビュー ​を読み込む

    一意のドメインを使用する複数のサイトの場合:

    code language-php
    <?php
    function isHttpHost($host)
    {
        if (!isset($_SERVER['HTTP_HOST'])) {
        return false;
        }
        return $_SERVER['HTTP_HOST'] ===  $host;
    }
    
    if (isHttpHost("second.store.com")) {
        $_SERVER["MAGE_RUN_CODE"] = "<second-site>";
        $_SERVER["MAGE_RUN_TYPE"] = "website";
    }elseif (isHttpHost("store.com")){
        $_SERVER["MAGE_RUN_CODE"] = "base";
        $_SERVER["MAGE_RUN_TYPE"] = "website";
    }
    

    同じドメインを持つ複数のサイトの場合、host​と​ URI ​を確認する必要があります。

    code language-php
    <?php
    function isHttpHost($host)
    {
        if (!isset($_SERVER['HTTP_HOST'])) {
        return false;
        }
        return $_SERVER['HTTP_HOST'] ===  $host;
    }
    
    if (isHttpHost("store.com")) {
       $code = "base";
       $type = "website";
    
       $uri = explode('/', $_SERVER['REQUEST_URI']);
       if (isset($uri[1]) && $uri[1] == 'second') {
         $code = '<second-site>';
         $type = 'website';
       }
       $_SERVER["MAGE_RUN_CODE"] = $code;
       $_SERVER["MAGE_RUN_TYPE"] = $type;
    }
    
  4. magento-vars.php ファイルに変更を保存します。

統合サーバーでのデプロイとテスト

変更をAdobe Commerce on cloud infrastructure統合環境にプッシュして、サイトをテストします。

  1. リモートブランチにコードの変更を追加、コミット、プッシュします。

    code language-bash
    git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name>
    
  2. デプロイメントが完了するのを待ちます。

  3. デプロイメント後、Web ブラウザーでストア URLを開きます。

    一意のドメインで、次の形式を使用します:http://<magento-run-code>.<site-URL>

    例:http://french.master-name-projectID.us.magentosite.cloud/

    共有ドメインでは、次の形式を使用します:http://<site-URL>/<magento-run-code>

    例:http://master-name-projectID.us.magentosite.cloud/french/

  4. サイトを徹底的にテストし、コードをintegration ブランチにマージして、さらにデプロイします。

ステージングおよび実稼動へのデプロイ

ステージングおよび実稼動環境🔗への デプロイのデプロイメントプロセスに従います。 Starter環境とPro環境の場合は、Cloud Consoleを使用して、環境全体にコードをプッシュします。

Adobeでは、実稼動環境にプッシュする前に、ステージング環境で完全にテストすることをお勧めします。 統合環境でコードを変更し、環境全体にデプロイするプロセスを再度開始します。

recommendation-more-help
commerce-on-cloud-help-cloud-guide