LoginSignup
1
1

Laravelでドメインごとにルーティングを分ける

Posted at

やったことなかったけど、一つのLaravelに別ドメインからアクセスしたら別サービスとしてふるまう的な案件があったのでメモ。

実験のためにLaravel Sailでやったので、そこから。

環境

  • Windows10 WSL2(Ubuntu) php7.4.3

Laravel + Sail インストール

# Laravelインストール
composer create-project laravel/laravel lara-routing-domain

# Sailインストール
cd lara-routing-domain/
php artisan sail:install
# DBを聞かれて、実験なので何でも良かったけどついクセでmysqlの0を入力してEnter

ここまで公式ドキュメント通り

SailのDockerコンテナ起動

./vendor/bin/sail up

ブラウザに localhost と入力してEnter

image.png

激かんたんですね。ホストはphp7.4.3でしたが、Sail内では最新の8.2系で動いてます。ありがた。

# Ctrl+Cで一旦コンテナを停止しとく

ポート番号を変える

記事とは関係ないけど、今回の案件で元々のポート番号が80じゃなかったので、一応近い状態にする。デフォルトだとポート80で待ち受けるように動作しますが、ポート9876に変更します。

.env
# 以下を追加
APP_PORT=9876
# shellの表示がうざいので -d をつけてバックグラウンドで動くように
./vendor/bin/sail up -d

ブラウザに localhost:9876 と入力してEnterすると、さっきの画面が出るはずです。楽チン♪

複数ドメインからアクセス

localhostじゃなくて、別のドメインでアクセスできるようにします。といっても適当につけたいドメイン名が自端末を向くようにhostsを編集するだけです。

Windowsでは管理者権限でメモ帳を開くなりして編集してください

# C:\Windows\System32\drivers\etc\hosts に下記2行を追加
127.0.0.1 local1.com
127.0.0.1 local2.com

ブラウザに local1.com:9876 と入力しても、 local2.com:9876 と入力してもLaraveのページが表示されます。おちゃのこ♪

ルーティングを分ける

あとはLaraelのルーティングを分離するだけです。あらかじめ domain()が用意されているので、それを使うだけのお仕事です。

web.php
// 元はこれ
Route::get('/', function () {
    return view('welcome');
});
web.php
// こんな感じに変更
Route::domain('local1.com')->group(function () {
    Route::get('/', function () {
        dd('local1.com');
    });
});

Route::domain('local2.com')->group(function () {
    Route::get('/', function () {
        dd('local2.com');
    });
});

ブラウザに local1.com:9876 でアクセスして画面に「local1.com」と、local2.com:9876 でアクセスして画面に「local2.com」と表示されました。ピースオブケイク…!

まとめ

最近レガシー案件とかトラブル対応ばかりやっていたので、これぐらいの体験でも感動してしまいました(これぐらいの体験とかいうなめっちゃ便利に作ってくれとるぞ)

Laravelありがとう!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1