カテゴリ: Symfony 更新日: 2026/03/14

Symfonyでマルチドメイン・サブドメイン対応ルートを定義する方法を完全解説

Symfonyでマルチドメイン・サブドメイン対応ルートを定義する方法
Symfonyでマルチドメイン・サブドメイン対応ルートを定義する方法

先生と生徒の会話形式で理解しよう

生徒

「Symfonyで、ドメインごとに表示するページを変えることってできますか?」

先生

「できますよ。Symfonyのルーティング機能を使えば、マルチドメインやサブドメインに対応したページ分けができます。」

生徒

「ドメインって難しそうですが、初心者でも大丈夫ですか?」

先生

「大丈夫です。住所に例えながら、ゆっくり説明していきましょう。」

1. Symfonyのルーティングとは?

1. Symfonyのルーティングとは?
1. Symfonyのルーティングとは?

Symfonyのルーティングとは、「どのURLにアクセスされたら、どの処理を実行するか」を決める仕組みです。URLはインターネット上の住所のようなもので、Symfonyはその住所を見て、正しい部屋(コントローラー)へ案内してくれます。これにより、Symfonyアプリケーションは整理された構造を保つことができます。

プログラミング未経験の方は、URLを「郵便番号付きの住所」、ルーティングを「郵便物を仕分けする人」と考えると分かりやすいです。

2. ドメインとサブドメインの基本

2. ドメインとサブドメインの基本
2. ドメインとサブドメインの基本

ドメインとは「example.com」のようなWebサイトの名前です。一方、サブドメインは「admin.example.com」や「shop.example.com」のように、用途別に分けられた小さな住所です。

Symfonyでは、これらのドメインやサブドメインごとにルート(処理)を分けることができます。これをマルチドメイン対応サブドメイン対応ルーティングと呼びます。

3. Symfonyでマルチドメイン対応が必要な理由

3. Symfonyでマルチドメイン対応が必要な理由
3. Symfonyでマルチドメイン対応が必要な理由

マルチドメイン対応を行うと、1つのSymfonyプロジェクトで複数のWebサイトを管理できます。例えば、「企業サイト」と「管理画面」を別ドメインで運用する場合でも、同じSymfonyアプリケーションで実現できます。

これにより、コードの再利用がしやすくなり、保守や修正も楽になります。初心者の方でも、仕組みを理解すれば安全に使えます。

4. ドメイン指定ルートの基本的な書き方

4. ドメイン指定ルートの基本的な書き方
4. ドメイン指定ルートの基本的な書き方

Symfonyでは、ルート定義時にhostという設定を使うことで、特定のドメイン専用のルートを作れます。


use Symfony\Component\Routing\Annotation\Route;

class HomeController
{
    #[Route('/', name: 'main_home', host: 'example.com')]
    public function index()
    {
        return 'メインサイトです';
    }
}

この設定では、「example.com」にアクセスしたときだけ、この処理が実行されます。他のドメインでは反応しません。

5. サブドメイン対応ルートを定義する方法

5. サブドメイン対応ルートを定義する方法
5. サブドメイン対応ルートを定義する方法

次に、サブドメイン対応です。サブドメインは変数として扱うこともできます。


#[Route('/', name: 'sub_home', host: '{subdomain}.example.com')]
public function subDomain($subdomain)
{
    return $subdomain . '用のページです';
}

この例では、「admin.example.com」や「shop.example.com」にアクセスすると、それぞれのサブドメイン名が表示されます。これは、マンションの部屋番号を自動で読み取るようなイメージです。

6. 複数ドメインを1つのルートで扱う方法

6. 複数ドメインを1つのルートで扱う方法
6. 複数ドメインを1つのルートで扱う方法

Symfonyでは、複数ドメインをまとめて扱うことも可能です。条件を使って処理を分けることで、柔軟な設計ができます。


#[Route('/', name: 'multi_domain', host: '{domain}')]
public function multiDomain($domain)
{
    if ($domain === 'example.com') {
        return 'example.com用ページ';
    }
    return 'その他のドメイン用ページ';
}

これにより、ドメインごとに表示内容を切り替えられます。初心者の方でも、if文が分かれば理解しやすい仕組みです。

7. YAMLで定義するマルチドメインルーティング

7. YAMLで定義するマルチドメインルーティング
7. YAMLで定義するマルチドメインルーティング

Symfonyでは、PHPだけでなくYAML形式でもルーティングを定義できます。設定ファイルで管理したい場合に便利です。


main_home:
    path: /
    host: example.com
    controller: App\Controller\HomeController::index

YAMLは設定専用の書き方で、文章のように読めるのが特徴です。プログラミング未経験の方でも、構造を理解しやすい形式です。

8. マルチドメイン設計でよくある注意点

8. マルチドメイン設計でよくある注意点
8. マルチドメイン設計でよくある注意点

マルチドメイン対応では、キャッシュやCookieの扱いに注意が必要です。特にログイン機能がある場合、ドメインが違うと情報を共有できないことがあります。

Symfonyのルーティング自体はシンプルですが、設計段階で「どのドメインで、誰が、何を見るか」を整理することが大切です。これは家の間取りを考えるのと同じで、最初に決めておくと後が楽になります。

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.2
Java&Spring記事人気No2
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.3
Java&Spring記事人気No3
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.5
Java&Spring記事人気No5
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
No.6
Java&Spring記事人気No6
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniter(コードイグナイター)入門!どんな開発案件に向いている?利用シーン別解説
No.8
Java&Spring記事人気No8
Laravel
Laravelのview()関数の使い方を完全ガイド!初心者でもわかるBladeテンプレート表示と画面作成