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

1661 回閲覧されました
みなさんこんにちは、jonioです。
Laravelで存在しないURLにアクセスしたら↓の様に404になります。

こうなるよりも存在しているURLにリダイレクトした方が自然です。
今回はそのやり方を説明します。
宣伝
無料で使えるLaravelの学習サイトを作りました。
ユーザー登録をしてぜひ利用して下さい。
サイトはここから。
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('/');
}