複数のweb サイトや店舗の設定
Adobe Commerceでは、英語ストア、フランス語ストア、ドイツ語ストアなど、複数のweb サイトやストアを設定できます。 Web サイト、ストア、ストアビューについてを参照してください。
複数のストアを設定するプロセスは、一意のドメインと共有ドメインのどちらを使用するかを選択します。
一意のドメインを持つ複数のストア:
https://first.store.com/
https://second.store.com/
同じドメインを持つ複数のストア:
https://store.com/first/
https://store.com/second/
ドメインの追加
カスタムドメインは、Pro ステージング環境および実稼動環境に追加できます。統合環境に追加することはできません。
ドメインを追加するプロセスは、クラウドアカウントの種類によって異なります。
-
プロ向けステージングと本番用
新しいドメインをFastlyに追加するか、 ドメインの管理を参照するか、サポートチケットを開いてサポートをリクエストしてください。 さらに、クラスターに新しいドメインを追加するには、Adobe Commerce サポートチケット を送信する必要があります。
-
スタータープロダクションのみ
新しいドメインをFastlyに追加します。サポートをリクエストするには、 ドメインの管理またはAdobe Commerce サポートチケットの送信を参照してください。 さらに、Cloud Consoleのドメイン タブに新しいドメインを追加する必要があります:
https://<zone>.magento.cloud/projects/<project-ID>/edit
ローカルインストールの設定
複数のストアを使用するようにローカルインストールを設定するには、設定ガイドの複数のweb サイトまたはストア を参照してください。
複数のストアを使用するローカルインストールを正常に作成してテストしたら、統合環境を準備する必要があります。
-
ルートまたは場所を設定 – 受信URLをAdobe Commerceで処理する方法を指定します
-
Web サイト、ストア、ストアビューを設定する—Adobe Commerce管理UIを使用して設定します
-
変数を変更 -
magento-vars.phpファイルのMAGE_RUN_TYPE変数とMAGE_RUN_CODE変数の値を指定します -
環境のデプロイとテスト -
integrationブランチのデプロイとテスト
Pro環境の設定の更新
routes.yaml ファイルのルート設定と.magento.app.yaml ファイルのcron設定を更新するために、Adobe サポートの支援が必要です。 Adobeでは、まず統合環境でYAML設定の変更をすべて行って検証し、その後ステージング環境にデプロイすることをお勧めします。個別のドメインのルートの設定
ルートは、受信URLを処理する方法を定義します。 一意のドメインを持つ複数のストアでは、routes.yaml ファイルで各ドメインを定義する必要があります。 ルートの設定方法は、サイトの操作方法によって異なります。
統合環境でルートを設定するには:
-
ローカル ワークステーションで、テキスト エディターで
.magento/routes.yamlファイルを開きます。 -
ドメインとサブドメインを定義します。
mymagentoアップストリーム値は、.magento.app.yamlファイルのname プロパティと同じ値です。code language-yaml "http://{default}/": type: upstream upstream: "mymagento:http" "http://<second-site>.{default}/": type: upstream upstream: "mymagento:http" -
routes.yamlファイルに変更を保存します。 -
引き続きWeb サイト、ストア、ストアビューの設定を行います。
共有ドメインの場所の設定
ルート設定がURLの処理方法を定義する場合、.magento.app.yaml ファイルのweb プロパティは、アプリケーションをWebに公開する方法を定義します。 Web locationsでは、受信リクエストをより詳細に指定できます。 例えば、ドメインがstore.comの場合、ドメインを共有する2つの異なるストアへのリクエストに/first (デフォルトのサイト)と/secondを使用できます。
新しいWebの場所を設定するには:
-
ルート (
/)のエイリアスを作成します。 この例では、エイリアスは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 ... -
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 ...
別のディレクトリを使用して場所を設定するには:
-
ルート (
/)と静的(/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" -
pubディレクトリの下にweb サイトのサブディレクトリを作成します:pub/<website> -
pub/index.phpファイルをpub/<website>ディレクトリにコピーし、bootstrapパス (/../../app/bootstrap.php)を更新します。code language-none try { require __DIR__ . '/../../app/bootstrap.php'; } catch (\Exception $e) { -
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 ... -
変更したファイルをコミットしてプッシュします。
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 ファイルを使用して変数を渡すには:
-
テキストエディターで
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; } -
コメントされた
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"; } -
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; } -
-
magento-vars.phpファイルに変更を保存します。
統合サーバーでのデプロイとテスト
変更をAdobe Commerce on cloud infrastructure統合環境にプッシュして、サイトをテストします。
-
リモートブランチにコードの変更を追加、コミット、プッシュします。
code language-bash git add -A && git commit -m "Implement multiple sites" && git push origin <branch-name> -
デプロイメントが完了するのを待ちます。
-
デプロイメント後、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/ -
サイトを徹底的にテストし、コードを
integrationブランチにマージして、さらにデプロイします。
ステージングおよび実稼動へのデプロイ
ステージングおよび実稼動環境🔗への デプロイのデプロイメントプロセスに従います。 Starter環境とPro環境の場合は、Cloud Consoleを使用して、環境全体にコードをプッシュします。
Adobeでは、実稼動環境にプッシュする前に、ステージング環境で完全にテストすることをお勧めします。 統合環境でコードを変更し、環境全体にデプロイするプロセスを再度開始します。