Laravelのルーティングでサブドメインを使う方法!初心者向けにやさしく解説
生徒
「Laravelでサブドメインごとに違うページを表示させることってできますか?」
先生
「はい、Laravelのルーティング機能を使えば簡単にサブドメインごとのページを作ることができますよ。」
生徒
「サブドメインって何か教えてください。初心者でもわかる説明でお願いします。」
先生
「サブドメインとは、インターネットの住所であるドメイン名の中にある、メインドメインの前に付く部分です。例えば blog.example.com の blog がサブドメインです。メインのドメインが example.com なら、その前に付く名前でサイトの違いを作ることができます。」
先生
「それでは、Laravelでサブドメインを使う方法を一緒に見ていきましょう!」
1. サブドメインとは?
サブドメインは、ドメイン名の前に付ける名前のことで、たとえば shop.example.com や support.example.com のように、異なるサイトや機能を区別するために使います。サブドメインを使うと、同じメインドメインの中で複数のサイトを作ることができます。
2. Laravelのルーティングでサブドメインを使う基本
Laravelでは、Route::domain() メソッドを使ってサブドメインを指定できます。例えば、blog.example.com にだけアクセスできるルートを作りたい場合は、次のように書きます。
Route::domain('blog.example.com')->group(function () {
Route::get('/', function () {
return 'ブログのトップページです';
});
});
このように書くことで、blog.example.com にアクセスしたときだけ、このルートが使われます。
3. ワイルドカードを使ったサブドメインの動的ルーティング
サブドメインの名前を動的に扱いたい場合は、ワイルドカードを使います。ワイルドカードは、どんな文字でも当てはまる「ひとつの穴」のようなものです。
例えば、{account}.example.com のように書くと、account の部分が自由に変わり、ルート内でその値を使えます。
Route::domain('{account}.example.com')->group(function () {
Route::get('/', function ($account) {
return "サブドメイン: {$account} のページです";
});
});
この場合、foo.example.com にアクセスすると「サブドメイン: foo のページです」と表示され、bar.example.com なら「サブドメイン: bar のページです」と表示されます。
4. ローカル開発環境でサブドメインを試す方法
サブドメインの動作を自分のパソコンで試すには、hosts ファイルにサブドメインを登録します。たとえば 127.0.0.1 blog.example.test のように書きます。
これにより、ブラウザで http://blog.example.test にアクセスするとローカルのLaravelアプリでサブドメインを扱えます。
127.0.0.1 example.test
127.0.0.1 blog.example.test
※hosts ファイルの編集は管理者権限が必要です。間違えるとネットに繋がらなくなる可能性があるので注意してください。
5. サブドメインを使うときの注意点
- 本番環境ではサーバーのDNS設定やWebサーバーの設定でサブドメインを登録する必要があります。
- SSL証明書もサブドメインごとに用意するか、ワイルドカード証明書を使う必要があります。
- セッションやクッキーの扱いに注意し、ドメイン全体で共有する場合は設定が必要です。
- Laravelの環境変数でサブドメイン名を管理すると便利です。
6. 共通ルートとサブドメイン別ルートの使い分け
すべてのサブドメインで共通のルートを使いたい場合は、普通にルートを定義します。サブドメインごとに別の処理をしたい時だけ Route::domain() を使い分けましょう。
Route::get('/about', function () {
return 'すべてのドメインでアクセスできるページです';
});
Route::domain('blog.example.com')->group(function () {
Route::get('/about', function () {
return 'ブログ専用のAboutページです';
});
});
まとめ
Laravelでサブドメインを使ったルーティングを学ぶことで、ひとつのアプリケーションの中に複数の役割や機能を整理しながら作り分ける方法を身につけることができます。とくにサブドメインは、メインのドメインの前に自由な名前を付けることで、ブログ用、ショップ用、サポート用というように、ひとつのサービスの中で複数の領域を構築できる便利な仕組みです。Laravelはこの仕組みを標準でサポートしているため、Route::domain() を使うだけで簡単にサブドメイン専用のルートを作れます。しかも、ワイルドカードを使えば、動的に変化するサブドメインに対応したページも自動で切り替えられるので、ユーザーごとに独自のサブドメインを割り当てるようなサービスにも応用できます。こうした柔軟なルーティングは、小規模なアプリだけでなく、企業向けの大規模なシステムや、複数店舗を持つECサイトなどでも役に立ちます。
また、ローカル環境でサブドメインを試す方法として、hostsファイルを編集する手順も理解しておくと開発がスムーズになります。通常、サブドメインをローカルで動かすにはDNSの設定が必要ですが、hostsファイルを使えば、開発中でも自由にサブドメインを模擬できます。Laravelのルーティング設定と合わせることで、複雑なドメイン構造でも正しく動作確認ができるようになります。さらに、本番環境ではDNS設定やSSL証明書の準備が欠かせないため、サブドメインを用いた開発ではサーバー側の設定も含めて理解を深めておくことが大切です。とくにSSLは、サブドメインごとに証明書を発行するか、ワイルドカード証明書を利用するかによって管理方法が変わるため、事前の設計が重要になります。
サブドメインを使ったルーティングは便利な半面、セッションやクッキーの扱いにも注意が必要です。サブドメイン間でログイン状態を共有したい場合、Laravel側でドメイン設定を変更しておかないとクッキーが正しく扱われず、意図せずログイン状態が切れてしまうことがあります。逆に、共有したくない場合はドメインを分けて管理することでセキュリティを高めることができます。用途に応じて使い分けることで、安全で快適なWebアプリケーションを構築できます。
さらに、サブドメインごとに異なるルートやコントローラを割り当てることで、特定のユーザーグループやサービス領域ごとに専用の画面を提供することも可能です。たとえば admin.example.com は管理者専用、member.example.com は会員専用というように分ければ、機能の整理がしやすくなるだけでなく、UIや機能のカスタマイズも自由に行えます。また、共通のルートは通常のRoute::get()をそのまま使い、サブドメインごとに切り替えたい部分だけRoute::domain() を使用することで、無駄のない構成を保つことができます。Laravelはこのような柔軟なルーティング構造に対応しているため、実務でも非常に重宝されるテクニックとなります。
サブドメインを活用したアプリケーションは、ユーザーごとに独自のページを持てるサービス、企業ごとに管理画面を分離するシステム、特定のブランドやサービスごとに独立したサイトを持つ構成など、多くの場面で採用されています。Laravelのルーティング機能は、こうした構成に適した仕組みが初めから用意されているため、複雑なWebサービスでもわかりやすく開発を進めることができます。今回学んだポイントを押さえておくと、アプリの設計段階からサブドメインを利用した構造を考えられるようになり、より高度なWebアプリケーションにも挑戦できるようになります。
サンプルプログラム:サブドメインごとにコントローラを切り替える
use App\Http\Controllers\BlogController;
use App\Http\Controllers\SupportController;
// ブログ専用サブドメイン
Route::domain('blog.example.com')->group(function () {
Route::get('/', [BlogController::class, 'index']);
});
// サポート専用サブドメイン
Route::domain('support.example.com')->group(function () {
Route::get('/', [SupportController::class, 'index']);
});
生徒
「サブドメインって聞いたことはありましたが、Laravelでこんなに簡単に扱えるとは思いませんでした。用途ごとにサイトを分けられるのは便利ですね。」
先生
「そうなんです。サブドメインは大規模なサービスほど役立つ仕組みですし、Laravelは設定がとてもシンプルなので初心者でも取り入れやすいんですよ。」
生徒
「ワイルドカードで動的にサブドメインを扱えるのも面白いですね。ユーザーごとに専用ページを作るサービスにも応用できそうです。」
先生
「その通りです。サブドメインの仕組みを理解しておくと、設計の幅が広がります。ローカル環境で試す方法や注意点も覚えておくと、実務でもすぐに活かせますよ。」
生徒
「今回学んだ内容を自分の開発でも使ってみます。ルーティングが整理されると全体が見やすくなりそうです。」
先生
「ぜひ実践してみてください。慣れてくるとサブドメインを使い分ける設計が自然にできるようになりますよ。」