Laravelで存在しないURLにアクセスした時にリダイレクトする方法

Laravelで存在しないURLにアクセスした時にリダイレクトする方法

1450 回閲覧されました

みなさんこんにちは、jonioです。

Laravelで存在しないURLにアクセスしたら↓の様に404になります。

こうなるよりも存在しているURLにリダイレクトした方が自然です。

今回はそのやり方を説明します。

Laravelのバージョン

8系と10系で確認できたので9系も実装可能だと思います。

web.phpからやる方法

存在しないURLにアクセスしたときにリダイレクトさせることをフォールバックルートと言います。

web.phpに下記のコードを追記します。

Route::fallback(function () {
	return redirect('/index');
});

2行目の「/index」の部分にリダイレクトしたいURLを書きますが存在しているURLを書きます。

これで存在しないURLにアクセスした時に他のページにリダイレクトできます。

コントローラーからやる方法

web.phpに下記の記述をします。

Route::fallback([AdminController::class, 'notFoundUrl']);

そしてコントローラーに下記の記述をします。

public function notFoundUrl() {
    return redirect('/');
}