How to Create Custom Route File in Laravel 8/9/10

Routes are the entry points to a Laravel application. There are two route files available in Laravel 8 by default. These are  web.php and api.php.

If required one can create custom route file in Laravel easily.

In this article I am going to show you how to create Custom Route File in Laravel 8.

Perquisite: An installed and working Laravel Application

Essentially there are two methods to create a custom Laravel route file. I will show the first one in this post and second one later sometime. For ones with older version of Laravel, can try this link.

In this post I will demonstrate creating /admin routes here, for example calling http://127.0.0.1:8000/admin

Let’s start doing it now.

Create a file routes/admin.php with the following code:

use App\Http\Controllers\UsersController;
use Illuminate\Support\Facades\Route;
use Illuminate\Routing\Router;
use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| Admin Routes
|--------------------------------------------------------------------------
|
| Here is where you can register admin routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "admin" middleware group. Now create something great!
|
*/

Route::get('/', function() {
    print('I am an admin');
});

Next, open the app/Providers/RouteServiceProvider.php and find public function boot() in it. Add the following code to it, just above or below the existing lines of code for web and api routing.

Route::prefix('admin')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));

So it becomes:

    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));

            Route::prefix('admin')
                ->middleware(['web', 'admin'])
                ->namespace($this->namespace)
                ->group(base_path('routes/admin.php'));
        });
    }

You should see I am an admin message on your browser window at http://127.0.0.1:8000/admin.

Note: Clear cache and test the url if it does not update. You can create a simple create cache route in your web.php routes file as shown below:

Route::get('/clear-cache', function() {
    Artisan::call('optimize:clear');
    echo Artisan::output();
});

You can follow this article about clearing cache in Laravel application.

In next articles I will show you how to create a set of an Admin routes so you can login via web routes but still protect your admin area via custom user login access check. (Edit: It is already there, check it now!)

I hope you liked this article about Create Custom Route File!

One thought on “How to Create Custom Route File in Laravel 8/9/10

Leave a Reply