こんにちは!
今回はMagentoおよびAdobe Commerce(以下まとめてMagento)でマルチサイト・マルチストア構成を組む際の「ストアURLの設定」について書いてみたいと思います。
Magentoは1つの環境で複数のWebサイト・ストアを運用できるのが大きな特徴ですが、それぞれのストアをどのようなURLで公開するかには、大きく分けて2つの方法があります。
- ドメイン分離方式: サイト(ストア)ごとに別のドメインを割り当て、ベースURLを個別に設定する
- ストアコード方式: 代表ドメイン1つの配下で、URLパスにストアコードを付けて振り分ける(「Add Store Code to Urls」をYesにする)
どちらを選ぶかで初期構築の手間も運用のしやすさも変わってくるので、それぞれの設定方法と違い、メリット・デメリットを整理してみます。
前提:Magentoのマルチサイト構造
本題に入る前に、Magentoのサイト構造を簡単におさらいしておきます。Magentoは以下の3階層でサイトを管理しています。
| 階層 | 役割 |
|---|---|
| Website(ウェブサイト) | 最上位の単位。顧客情報・価格・カートなどの分離境界 |
| Store(ストア) | Websiteの配下。カテゴリツリー(ルートカテゴリ)を切り替える単位 |
| Store View(ストアビュー) | 最下層。主に言語切り替えなど表示の単位 |
「ストアURLをどう公開するか」という話は、この階層のどこに対してURLを割り当てるか、という話でもあります。ドメインを分けるのは主にWebsite単位、ストアコードによるパス分けはStore View単位で行われます。
※構成のイメージ
├── 日本語ストアビュー (ja) ←同一website上でストアビューが異なる
└── 英語ストアビュー (en) ←同一website上でストアビューが異なる
Another Website (code: another, base: https://another-example.com/) ←別website
└── Anotherのストアビュー
方法1:ドメイン分離方式(ベースURLを個別に設定する)
サイトごとに別ドメイン(またはサブドメイン)を割り当てる、いちばんオーソドックスな方法です。
Another Website →もう1つのサイト (https://another-example.com/)
設定方法
1. WebsiteやStore Viewを作成する
管理画面の Stores > Settings > All Stores から、公開したい単位のWebsite / Store / Store Viewを作成します。

ここでは、Another Websiteにコード: anotherを割り当てています。
2. スコープを切り替えてベースURLを設定する
Stores > Settings > Configuration > General > Web を開き、画面左上の Scope(スコープ) を対象のWebsiteに切り替えてから、以下を設定します。

- Base URLs > Base URL : https://another-example.com/
- Base URLs (Secure) > Secure Base URL : https://another-example.com/
デフォルト設定の値を引き継いでいるチェックボックス(Use Default)を外してから入力する点に注意してください。
3. キャッシュをクリアする
設定変更後はキャッシュのクリアを忘れないように注意してください。(管理画面またはコマンドで実行)
bashの場合
bin/magento cache:flush
4. Webサーバー側でアクセスを振り分ける
ここがこの方式のポイントで、Magento側の設定だけでは完結しません。どのドメインでアクセスされたらどのWebsiteとして動作させるかを、Webサーバーの環境変数で指示する必要があります。使うのは次の2つです。
| 環境変数 | 役割 |
|---|---|
MAGE_RUN_TYPE |
コードが指す単位の種類。website または store を指定する |
| MAGE_RUN_CODE | 起動したいWebsite(またはStore View)のコード。管理画面のAll Storesで設定したCodeの値を指定する |
Magentoはリクエストを受け取った際にこの2つの値を読み取り、「どのWebsite(またはStore View)として起動するか」を決定します。
今回の例では、1つ目のWebsite(Main Website)のコードを main、もう一方のWebsite(Another Website)のコードを another と設定しておきます。こうしておくと、ドメインごとのバーチャルホスト設定でそれぞれのコードを MAGE_RUN_CODE に渡すことで、2つのWebsiteを識別して振り分けられます。
Nginxの場合、another-example.com 側の設定は以下のようなイメージです。
nginx
# another-example.com 用の server ブロック内
location ~ ^/index\.php {
fastcgi_param MAGE_RUN_TYPE website;
fastcgi_param MAGE_RUN_CODE another;
# ...
}
また、当然ながらドメインごとにDNS設定とSSL証明書の用意も必要です。
方法2:ストアコード方式(Add Store Code to Urlsを使う)
もう1つが、代表ドメイン1つの配下でURLパスにストアコードを付けて公開する方法です。
https://example.com/en/ → 英語ストアビュー
のように、Store Viewのコードがそのままパスの先頭に付きます。
設定方法
1. Store Viewを作成する
Stores > Settings > All Stores から、同一Website配下にStore Viewを作成します。
このとき設定する Code(例: ja, en)がそのままURLに使われるので、公開して問題ない名前を付けておきましょう。

2. Add Store Code to UrlsをYesにする
Stores > Settings > Configuration > General > Web > Url Options にある Add Store Code to Urls を Yes に変更します。

これだけで、フロントエンドの全URLにストアコードが付与されるようになります。Webサーバー側の追加設定は不要で、Magentoが自動的にパスからストアビューを判定してくれます。
3. キャッシュをクリアする
設定変更後はキャッシュのクリアを忘れないように注意してください。
注意点
- ストアコードが付くのはフロントエンドのページURLのみです(商品ページ、カテゴリー、トップページ、各CMSページなど)
- /media配下の静的ファイルのパスにはストアコードは付かず全ストアビュー共通です
- /static のパスも同様でストアコードは付きませんが、こちらはテーマやロケールごとにパスが分かれるのでロケールが異なればパスも分かれます
また、稼働中のサイトで途中からYesに切り替えると既存の全URLが変わることになりますので、運用中のサイトの場合はSEOなどに影響がないかも注意が必要です。
2つの方式の比較
それぞれの特徴を表に整理してみます。
| 項目 | ドメイン分離方式 | ストアコード方式 |
|---|---|---|
| URLの形 | https://example.com/ https://another-example.com/ |
https://example.com/ja/ https://example.com/en/ |
| Magento側の設定 | スコープごとのベースURL設定 | Add Store Code to Urls = Yes |
| Webサーバー側の作業 | 必要(vhost + MAGE_RUN_CODE等) | 不要 |
| DNS / SSL証明書 | ドメインごとに必要 | 代表ドメインの1つで済む |
| ブランドの分離感 | ◎ 完全に別サイトに見える | △ 同一ドメイン配下だと分かる |
| ログイン・カートの共有 | ドメインが違うためCookieを共有できない | 同一Website内なら共有される |
| 向いている単位 | Website単位の分離 | 同一Website内のStore View分け |
ドメイン分離方式のメリット・デメリット
メリット
- ブランドごとに完全に独立したサイトとして見せられる
- ドメイン単位でSEO評価やアクセス解析を分けられる
- Website単位で顧客・価格・カートを分ける構成と相性が良い
デメリット
- DNS・SSL証明書・Webサーバー設定と、インフラ側の作業が発生する
- ローカルの開発環境でも同様のドメイン振り分けを再現する手間がある
- ドメインが増えるごとに同様の作業が必要で管理コストが高い
ストアコード方式のメリット・デメリット
メリット
- 管理画面の設定1つで完結し、インフラ作業が不要
- 証明書・ドメインの管理が1つで済む
- 同一ドメインなので、ストアビュー間を移動してもログイン状態やカートが維持される(同一Website内の場合)
- 多言語サイトをサブディレクトリ型で構成する場合の定石とも相性が良い
デメリット
- URLに必ずストアコードが入るため、URL設計の自由度は低い
- ブランドをドメインレベルで分けたいケースには使えない
使い分けの目安
実際にどちらを選ぶかは、「何を分けたいのか」で考えると整理しやすいです。
- 別ブランド・別事業のECサイトを1つのMagentoで運用したい → Website単位で分けてドメイン分離方式
- 同じサイトの多言語対応・地域対応をしたい → Store View単位で分けてストアコード方式
もちろん組み合わせることも可能で、「Websiteごとにドメインを分けつつ、各Website内の言語切り替えはストアコードで行う」というハイブリッド構成も可能です。
https://example.com/en/ → Main Website / 英語
https://another-example.com/ → Another Website
まとめ
- Magentoのマルチストア公開には「ドメイン分離方式」と「ストアコード方式」の2つがある
- ドメイン分離はブランドを完全に分けられる反面、DNS・SSL・Webサーバー設定などインフラ側の作業が必要
- ストアコード方式は管理画面の設定だけで完結する手軽さが魅力で、多言語対応との相性が良い
- 「Websiteを分けたいのか、Store Viewを分けたいのか」を先に整理すると、自然とどちらの方式が合うか見えてくる
マルチサイト構成は最初のURL設計を間違えると後からの変更コストが大きい部分です。要件を整理した上で公開方式を選んでいきましょう。
※本記事は、Adobe Commerce 2.4.7-p2のオンプレ版を使用しています。

