0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel サブドメインルーティング(Subdomain Route)が効かない

Posted at

前提

Laravel 9.x
Laravel Sail
Laravel Jetstream設定済み

やりたいこと

Laravelのサブドメインルーティングが効かない。

admin.example.comに管理者用、example.comで通常用。それぞれでJetstreamを利用したい。

web.php
# 一番上に記載
Route::domain('admin.example.com')->group(function () {
    Route::get('/login', function () {
        dd('admin login page');
    });
});

このときadmin.example.com/loginにアクセスしたときに、jetstreamのloginページが表示されてしまう。

原因

Readoubleにある通り、サブドメインなしのドメインルートを登録する前にサブドメインルートを登録しておく必要があるのですが、Jetstream(というかFortify)内のrouteでやっているため

Note: ルーティングがサブドメインルートに到達できるようにするには、サブドメインなしのドメインルートを登録する前にサブドメインルートを登録しておく必要があります。これにより、サブドメインなしのドメインルートが同じURIパスを持つサブドメインルートを上書きするのを防げます。

直し方

それぞれルーティング無効化して、自身でインポートする

# fortifyのroute
# vendor/laravel/fortify/routes/routes.phpからコピーする
cp ./vendor/laravel/fortify/routes/routes.php ./routes/fortify.php
FortifyServiceProvider.php

    public function register(): void
    {
        Fortify::ignoreRoutes(); # 追加
    }

# jetstreamのroute
php artisan vendor:publish --tag=jetstream-routes
JetstreamServiceProvider.php

    public function register(): void
    {
        Jetstream::ignoreRoutes(); # 追加
    }

既存のrouteにインポート

web.php
<?php

Route::domain('admin.example.com')->group(function () {
    Route::get('/login', function () {
        dd('admin login page');
    });
});

# ~ 省略 ~

require __DIR__.'/fortify.php';
require __DIR__.'/jetstream.php';

これでサブドメインが機能するようになりました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?