カテゴリ: Laravel 更新日: 2026/03/18

Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説

Laravelでドメインルートを使う方法(マルチドメイン対応)
Laravelでドメインルートを使う方法(マルチドメイン対応)

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

生徒

「Laravelで複数のドメインを使い分けて、それぞれ違うサイトを表示したいんですが、どうしたらいいですか?」

先生

「それはマルチドメイン対応という機能を使います。Laravelのルーティングでドメインごとにルートを分けることができますよ。」

生徒

「マルチドメインって何ですか?ドメインって何かもよく分かりません…」

先生

「ドメインとはインターネット上の住所のようなもので、例えば example.commyblog.net などがあります。マルチドメイン対応は、ひとつのLaravelアプリで複数のドメインを使い分けて、それぞれ違う内容のページを表示する仕組みです。」

先生

「今回はLaravelでドメインルートを使ってマルチドメイン対応を設定する方法をわかりやすく解説しますね!」

1. ドメインルートとは?

1. ドメインルートとは?
1. ドメインルートとは?

Laravelのドメインルートとは、「どのドメインにアクセスされたか」に応じて表示するページや処理を切り替えるための仕組みです。通常は /home/about など URL のパス部分でルートを分けますが、マルチドメインの場合は “ドメイン名そのもの” を使って振り分けます。

たとえば、example.com では企業サイト、myblog.net ではブログサイトを表示したいといったケースで活躍します。ひとつのLaravelアプリの中で複数のサイトを動かせるため、管理がしやすく、コードの重複も減らせるメリットがあります。

イメージしやすいように、簡単な例を見てみましょう。


// それぞれのドメインに対応したページを用意する例
Route::domain('example.com')->group(function () {
    Route::get('/', function () {
        return '企業サイトのトップページ';
    });
});

Route::domain('myblog.net')->group(function () {
    Route::get('/', function () {
        return 'ブログサイトのトップページ';
    });
});

このように、同じ /(トップページ)でもドメインが違えば別の内容を返せます。プログラミング未経験の方は「同じ住所の部屋番号が違うと別の部屋につながる」というイメージを持つと理解しやすいでしょう。Laravel のドメインルートは、この仕組みをアプリの中で簡単に実現できる便利な機能です。

2. Laravelでドメインルートを使う基本的な方法

2. Laravelでドメインルートを使う基本的な方法
2. Laravelでドメインルートを使う基本的な方法

Laravelでは、特定のドメインだけに適用されるルートを設定したいときに、domain() メソッドを使います。このメソッドを使うことで、「このドメインからアクセスされたときはこのページを見せる」というように、ドメインごとにまったく別のルート構成を組み立てることができます。

設定はとてもシンプルで、routes/web.php で対象となるドメイン名を指定し、その中に通常のルートをまとめるだけです。初心者でも迷わない書き方なので、まずは次の例を見てみましょう。


// example.com 用のルート設定
Route::domain('example.com')->group(function () {
    Route::get('/', function () {
        return view('welcome_example'); // example.com 用トップページ
    });

    Route::get('/info', function () {
        return 'Exampleドメイン専用のお知らせページ';
    });
});

// myblog.net 用のルート設定
Route::domain('myblog.net')->group(function () {
    Route::get('/', function () {
        return view('welcome_blog'); // myblog.net 用トップページ
    });

    Route::get('/articles', function () {
        return 'ブログ記事一覧ページ';
    });
});

このように、同じ Laravel アプリでもドメインが違えば別のページ構成を持たせることができます。同じ / というルートでも、どのドメインからアクセスされたかによって表示内容が変わるため、まるで別アプリを動かしているように見える仕組みになります。

プログラミングに慣れていない方は、「マンションは同じでも、部屋番号によって住んでいる人や部屋の中身が違う」という例えをイメージすると理解しやすいでしょう。Laravel のドメインルートは、それをアプリで実現するイメージです。

3. なぜマルチドメイン対応が便利?

3. なぜマルチドメイン対応が便利?
3. なぜマルチドメイン対応が便利?

マルチドメイン対応が便利と言われる一番の理由は、「ひとつのLaravelアプリで複数のサイトをまとめて管理できる」ことです。たとえば会社のメインサイトは example.com、採用サイトは recruit.example.com、ブログは myblog.net のように分けたい場合でも、Laravelのドメインルートを使えば、ひとつのプロジェクトの中で役割ごとにサイトを切り分けられます。

別々のアプリとして作ってしまうと、認証処理や共通のヘッダー・フッター、問い合わせ処理などをそれぞれのプロジェクトで重複して実装しなければなりません。マルチドメイン対応にしておけば、共通部分はひとつにまとめ、ドメインごとに変えたい部分だけを分ければよいので、コードの再利用がしやすく、保守の手間もぐっと減らせます。

また、ドメインごとにデザインや内容を変えたいときにも柔軟に対応できます。企業サイトは落ち着いたデザイン、ブログはカジュアルなデザイン、といったように、ルートやビューを分けておくだけで、ユーザーに見せたい雰囲気をドメインごとに変えやすくなります。キャンペーン用ドメインを追加したいときも、新しいLaravelプロジェクトを一から作るのではなく、既存アプリにドメインルートを足すだけで対応できます。

プログラミング未経験の方は、「同じ建物の中に、会社用の受付フロア・ショップフロア・イベントフロアがある」というイメージをすると分かりやすいかもしれません。建物の土台(Laravelアプリ)はひとつですが、フロア(ドメイン)ごとに役割を変えて案内できるのが、マルチドメイン対応の大きな魅力です。

4. 複数ドメインにまたがるルートの共通部分の使い方

4. 複数ドメインにまたがるルートの共通部分の使い方
4. 複数ドメインにまたがるルートの共通部分の使い方

マルチドメイン対応をするときでも、「どのドメインからアクセスされても同じ内容を見せたいページ」は必ず出てきます。たとえばお問い合わせページや利用規約、ログイン画面などは、企業サイトから見てもブログサイトから見ても同じページで問題ないケースが多いはずです。

このような「共通で使いたいページ」は、あえてドメインを指定せず、通常のルートとして定義しておくのがポイントです。一方で、「このドメインだけ特別に見せたいページ」だけを domain() を使って分けるようにすると、Laravelのルーティング設定がすっきりまとまりやすくなります。


// すべてのドメインで共通のページ
Route::get('/contact', function () {
    return view('contact'); // 共通のお問い合わせページ
});

Route::get('/terms', function () {
    return view('terms'); // 共通の利用規約
});

// example.com だけで表示したいページ
Route::domain('example.com')->group(function () {
    Route::get('/special', function () {
        return 'Example.com だけの特別ページ';
    });
});

このサンプルでは、/contact/terms はドメイン指定をしていないため、example.com/contact からでも myblog.net/contact からでも同じビューが表示されます。一方、/specialexample.com のドメインルート内で定義しているため、example.com/special からしかアクセスできません。

プログラミング未経験の方は、「どの入口から来ても案内する共通の受付」と「この入口から来た人にだけ案内する特別ルーム」があるイメージを持つと理解しやすいでしょう。共通ルートは通常どおり定義し、ドメインごとに変えたい部分だけを domain() で分けることで、マルチドメイン対応のLaravelアプリでもシンプルで管理しやすいルーティング設計にできます。

5. localhostで複数ドメインを試す方法

5. localhostで複数ドメインを試す方法
5. localhostで複数ドメインを試す方法

実際にマルチドメイン対応を学ぶうえで、「ローカル環境でも複数ドメインを切り替えて動作確認したい」という場面はよくあります。専用のサーバーがなくても、パソコンの hosts ファイルを少し編集するだけで、本物のドメインのようにアクセスを切り替えられます。

仕組みはとてもシンプルで、「特定の名前(ドメイン)を自分のパソコンのIPアドレスへ向けるだけ」です。こうするとブラウザは、普段の localhost と同じ場所を参照するにもかかわらず、ドメイン名に応じて別のLaravelルートを動かせるようになります。

Windowsなら C:\Windows\System32\drivers\etc\hosts、Mac/Linuxなら /etc/hosts を管理者権限で開き、次のように追記します。


127.0.0.1 example.test
127.0.0.1 myblog.test
127.0.0.1 admin.example.test

この設定を保存すると、http://example.testhttp://myblog.test と入力するだけで、Laravelのドメインルートに応じたページが表示されます。ブラウザ上では本物のドメインと同じ扱いになるため、実際の運用に近い状態でテストできるのが大きなメリットです。

プログラミングに慣れていない方は、「同じ家の玄関に、呼び名の違う表札をつけて試すイメージ」と考えると理解しやすいでしょう。どの表札を使って呼んだかによって、案内される部屋(ページ)が変わる、という感覚です。

6. ドメインルート設定の注意点

6. ドメインルート設定の注意点
6. ドメインルート設定の注意点

マルチドメイン対応を本番環境で運用する際には、Laravel側の設定だけでなく、サーバーやドメイン管理の仕組みも正しく整えておく必要があります。特に初心者がつまずきやすいのが「DNS設定」「SSL証明書」「認証・セッション管理」など、Laravelの外側にある仕組みです。

  • サーバー側で各ドメインの設定が必要(DNSレコード、Webサーバーのバーチャルホスト設定など)
  • SSL(https)証明書はドメインごとに発行が必要(example.commyblog.net は別扱い)
  • ドメイン切り替え時、セッションの共有可否を考える必要がある(ログイン状態を共通にしたい場合など)
  • Laravelの環境変数(.env)でドメイン名を管理しておくと保守がしやすい

たとえば、ログイン状態を複数ドメインで共有したい場合、セッションをドメイン共通にできるかどうか、Cookieの設定が適切かといった点を確認する必要があります。逆に「ドメインごとに完全に独立したログイン状態にしたい」のであれば、セッション名を分けるなどの工夫も必要です。

また、本番環境では Webサーバーに「このドメインのアクセスはこのLaravelプロジェクトに届けてください」という指示を書く必要があります。これは Apache の VirtualHost 設定や Nginx の server ブロックなどで行う作業です。Laravelのルート設定だけでは動作しないため、サーバー側の設定も含めてひとつの仕組みとして理解しておくと安心です。

初心者の方は、「ドメインは建物の入口、サーバー設定は入口から部屋までの案内板、Laravelは部屋の中での案内役」というイメージをすると分かりやすいでしょう。それぞれの役割がそろって、はじめてマルチドメイン対応が正しく動作します。

7. ポイントのおさらい

7. ポイントのおさらい
7. ポイントのおさらい
  • ドメインルートはLaravelの domain() メソッドで設定
  • 複数ドメインで異なるページを同じLaravelアプリで管理できる
  • ローカル環境で複数ドメインを試すにはhostsファイルを編集
  • 本番環境ではDNSやサーバー設定も必要になる
  • 共通ルートはドメイン指定なしで設定可能でコードがすっきり

まとめ

まとめ
まとめ

Laravelでマルチドメイン対応を行うためのドメインルート設定は、複数のサービスやブランドを一つのアプリケーションで運用したい場合に非常に有効な仕組みです。特に、企業サイトとブログ、オンラインショップのように用途がはっきり分かれた複数サイトをまとめて管理したい場面では、ドメインルートを活用することで効率的かつ整理されたプロジェクト構成を保つことができます。今回の記事では、ドメインルートの概念から、実際にLaravelでどのようにコードを書くのか、そして複数ドメインをローカル環境で検証する方法までを順序立てて紹介しました。ドメイン名ごとにルートを分けられるという仕組みは一見複雑に感じるかもしれませんが、Laravelのルートグループ機能と組み合わせることで非常に直感的な設計が可能になります。

また、ドメインルートを使う場面では、Webサーバーの設定やDNSの設定などLaravel以外の知識も必要になってきます。しかし、Laravel側で行うコードの記述自体はとてもシンプルで、domainメソッドにドメイン名を渡し、その中にルートを定義するだけで特定のドメイン向けの処理を細かく切り分けられる点が大きな魅力です。複数のドメインが並行して運用されるプロジェクトでは、ビューのテンプレートやコントローラもそれぞれに用意するケースが多く、ディレクトリ構成の工夫と合わせることで大規模なプロジェクトでも見通しの良い設計が可能になります。

さらに便利な点として、共通ルートを通常通り定義すればすべてのドメインでアクセスできるため、重複コードを書かなくて済むところがあります。特に、お問い合わせフォームや会社情報など複数サイトで共通するページを持つ企業では、この仕組みが大きなメリットになります。一方で、特定ドメインのみで表示したいページについてはドメインルート内に限定してルートを配置することで、意図しないアクセスや混乱を防ぐことができます。このように、ドメインルートは「共通化」と「独立化」を柔軟に組み合わせられる優れた仕組みとして、実務でも広く使われています。

また、ローカル環境で複数ドメインを試せる点も大切なポイントです。hostsファイルに任意のドメイン名を設定すれば、まるで本番環境のように複数ドメインの挙動を確認でき、開発段階での動作確認がとても楽になります。これはLaravelに限らずWebアプリケーション開発全般で役立つ知識であり、今後他のフレームワークを触る際にも活かせる汎用性の高い方法です。

下に、練習用としてシンプルにまとめたドメインルート設定のサンプルコードを載せておくので、まずはこのコードを参考に手を動かしながら学習を進めることをおすすめします。

ドメインルート練習用サンプルコード


Route::domain('service.example.com')->group(function () {
    Route::get('/', function () {
        return view('service_top'); 
    });
});

Route::domain('store.example.com')->group(function () {
    Route::get('/', function () {
        return view('store_top');
    });
});

Route::get('/info', function () {
    return view('info_page');
}); // どのドメインでもアクセス可能な共通ルート
先生と生徒の振り返り会話

生徒

「先生、ドメインルートの使い方がだいぶわかりました!複数のドメインをまとめて管理できるのは便利ですね。」

先生

「その理解はすごく良いですね。Laravelのルーティングは柔軟なので、複数ドメインの設計にはとても向いていますよ。慣れてくると、ひとつのアプリで複数のサービスを自然に扱えるようになります。」

生徒

「hostsファイルを使ったローカル環境での確認方法も初めて知りました。これを使えばテストもしやすいですね。」

先生

「そうなんです。開発の段階で複数ドメインを再現できるのはとても大事なことです。本番環境のサーバー設定とも結びついて理解できるようになると、さらに深い知識として身につきますよ。」

生徒

「共通ルートとドメイン専用ルートを分けられるところも、実務で役立ちそうですね。整理しやすくていい仕組みだと思いました!」

先生

「その通りです。これからLaravelの認証やミドルウェアを学ぶと、マルチドメインの設計がさらに幅広く応用できるようになりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Laravelのドメインルートとは何ですか?

Laravelのドメインルートとは、URLのドメイン名ごとにルートを分ける機能のことで、複数のドメインを使って異なるページを表示できるLaravelのルーティング手法です。
関連記事:
カテゴリの一覧へ
新着記事
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
Laravel
Laravelのresponse()関数の使い方を完全ガイド!初心者でもわかるレスポンス制御とHTTPレスポンスの基本
No.5
Java&Spring記事人気No5
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.7
Java&Spring記事人気No7
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
No.8
Java&Spring記事人気No8
Laravel
LaravelでRemember Me(ログイン状態保持)機能を実装する方法を完全解説!初心者でも安心の認証入門