Laravel redirect on a missing model resource instead of 404

When a model resource is not found in Laravel you get an HTTP 404 not found, however you can also do other actions such as a redirect.

Using the missing() method in your route resource gives you the ability to use a callback when the model resource is missing.

use App\Http\Controllers\PostController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
 
Route::resource('posts', PostController::class)
        ->missing(function (Request $request) {
            return Redirect::route('posts.index');
        });

In the example above if the resource model isn’t found (/posts/123) there will be a redirect to the index of the resource instead of showing a 404 not found page.