Bird
Raised Fist0
Laravelframework~5 mins

Route prefixes in Laravel

Choose your learning style10 modes available
Introduction

Route prefixes help group similar routes under a common URL part. This keeps your URLs organized and easier to manage.

You want all admin pages to start with /admin in the URL.
You have an API with many endpoints starting with /api.
You want to group user-related routes under /user.
You want to add a common prefix to routes for versioning like /v1.
You want to apply middleware or settings to a group of routes sharing a prefix.
Syntax
Laravel
Route::group(['prefix' => 'prefix'], function () {
    // Define routes here
});
The prefix string is added before all routes inside the group.
You can nest prefix groups for more complex URL structures.
Examples
This groups routes under the /admin prefix. The full URL for the dashboard is /admin/dashboard.
Laravel
Route::group(['prefix' => 'admin'], function () {
    Route::get('/dashboard', function () {
        return 'Admin Dashboard';
    });
});
This creates an API route at /api/users.
Laravel
Route::group(['prefix' => 'api'], function () {
    Route::get('/users', function () {
        return 'User list';
    });
});
Multiple routes share the /user prefix, so URLs are /user/profile and /user/settings.
Laravel
Route::group(['prefix' => 'user'], function () {
    Route::get('/profile', function () {
        return 'User Profile';
    });

    Route::get('/settings', function () {
        return 'User Settings';
    });
});
Sample Program

This example groups blog-related routes under the /blog prefix. So the URLs are /blog/posts and /blog/posts/{id}.

Laravel
<?php

use Illuminate\Support\Facades\Route;

Route::group(['prefix' => 'blog'], function () {
    Route::get('/posts', function () {
        return 'List of blog posts';
    });

    Route::get('/posts/{id}', function ($id) {
        return "Viewing post with ID: $id";
    });
});
OutputSuccess
Important Notes

Route prefixes do not change the route names unless you also use name prefixes.

You can combine prefix with middleware or namespace for better route organization.

Summary

Route prefixes add a common URL part to grouped routes.

They help keep URLs clean and organized.

Use them to group related routes like admin, API, or user sections.

Practice

(1/5)
1. What is the main purpose of using Route::prefix() in Laravel?
easy
A. To register routes in a different file
B. To change the HTTP method of routes
C. To define middleware for routes
D. To add a common URL segment to a group of routes

Solution

  1. Step 1: Understand what Route::prefix() does

    This method adds a common URL segment to all routes inside the group, making URLs organized.
  2. Step 2: Compare with other options

    Changing HTTP methods, middleware, or file registration are done differently, not by prefix.
  3. Final Answer:

    To add a common URL segment to a group of routes -> Option D
  4. Quick Check:

    Route prefix = common URL part [OK]
Hint: Prefix means adding a shared start to URLs [OK]
Common Mistakes:
  • Confusing prefix with middleware
  • Thinking prefix changes HTTP methods
  • Assuming prefix changes route files
2. Which of the following is the correct syntax to define a route group with the prefix admin using Route::prefix() in Laravel?
easy
A. Route::group(['prefix' => 'admin'], function () { /* routes */ });
B. Route::prefix('admin')->group(function () { /* routes */ });
C. Route::prefix('admin', function () { /* routes */ });
D. Route::group('admin', function () { /* routes */ });

Solution

  1. Step 1: Recall Laravel prefix group syntax

    The correct syntax uses Route::prefix('admin')->group(function () { ... });.
  2. Step 2: Identify incorrect options

    Route::group(['prefix' => 'admin'], function () { /* routes */ }); uses group() with array instead of prefix(). Route::prefix('admin', function () { /* routes */ }); incorrectly passes closure as second argument to prefix(). Route::group('admin', function () { /* routes */ }); passes string directly to group().
  3. Final Answer:

    Route::prefix('admin')->group(function () { /* routes */ }); -> Option B
  4. Quick Check:

    Use prefix()->group() for route prefixes [OK]
Hint: Use prefix('name')->group() for clean route groups [OK]
Common Mistakes:
  • Passing prefix as second argument to prefix()
  • Using group() without prefix()
  • Using array syntax incorrectly
3. Given the following Laravel routes code, what URL will respond to the DashboardController@index method?
Route::prefix('admin')->group(function () {
    Route::get('dashboard', [DashboardController::class, 'index']);
});
medium
A. /admin/dashboard
B. /admin
C. /dashboard
D. /dashboard/admin

Solution

  1. Step 1: Understand prefix effect on route URL

    The prefix 'admin' adds '/admin' before all routes inside the group.
  2. Step 2: Combine prefix and route path

    The route path is 'dashboard', so full URL is '/admin/dashboard'.
  3. Final Answer:

    /admin/dashboard -> Option A
  4. Quick Check:

    Prefix + route path = full URL [OK]
Hint: Add prefix before route path for full URL [OK]
Common Mistakes:
  • Ignoring prefix and using only route path
  • Reversing prefix and path order
  • Assuming prefix replaces route path
4. Identify the error in this Laravel route prefix usage:
Route::prefix('api', function () {
    Route::get('users', [UserController::class, 'index']);
});
medium
A. Missing ->group() method after prefix()
B. Prefix should be an array, not a string
C. Route::get() cannot be used inside prefix()
D. UserController::class is not valid here

Solution

  1. Step 1: Check prefix() usage

    The prefix() method requires chaining with group() to define routes inside.
  2. Step 2: Identify missing group() call

    Here, prefix('api') is called with a function directly, which is invalid syntax.
  3. Final Answer:

    Missing ->group() method after prefix() -> Option A
  4. Quick Check:

    prefix() must be followed by ->group() [OK]
Hint: Always chain ->group() after prefix() [OK]
Common Mistakes:
  • Passing closure directly to prefix()
  • Using array instead of string for prefix
  • Misplacing route definitions outside group
5. You want to create a route group with prefix api/v1 and middleware auth:sanctum. Which of the following is the correct way to do this using chained prefix() and middleware() methods in Laravel?
hard
A. Route::group(['prefix' => 'api/v1', 'middleware' => 'auth:sanctum'], function () { Route::get('profile', [ProfileController::class, 'show']); });
B. Route::middleware('auth:sanctum')->prefix('api/v1', function () { Route::get('profile', [ProfileController::class, 'show']); });
C. Route::prefix('api/v1')->middleware('auth:sanctum')->group(function () { Route::get('profile', [ProfileController::class, 'show']); });
D. Route::group('api/v1')->middleware('auth:sanctum')->group(function () { Route::get('profile', [ProfileController::class, 'show']); });

Solution

  1. Step 1: Understand chaining of prefix and middleware

    Laravel allows chaining prefix() and middleware() before group() to apply both settings.
  2. Step 2: Check each option's syntax

    Route::group(['prefix' => 'api/v1', 'middleware' => 'auth:sanctum'], function () { Route::get('profile', [ProfileController::class, 'show']); }); uses array syntax, not chained methods. Route::prefix('api/v1')->middleware('auth:sanctum')->group(function () { Route::get('profile', [ProfileController::class, 'show']); }); correctly chains prefix() and middleware() then calls group(). Route::middleware('auth:sanctum')->prefix('api/v1', function () { Route::get('profile', [ProfileController::class, 'show']); }); incorrectly passes closure to prefix(). Route::group('api/v1')->middleware('auth:sanctum')->group(function () { Route::get('profile', [ProfileController::class, 'show']); }); misuses group() twice with wrong parameters.
  3. Final Answer:

    Route::prefix('api/v1')->middleware('auth:sanctum')->group(function () { Route::get('profile', [ProfileController::class, 'show']); }); -> Option C
  4. Quick Check:

    Chain prefix and middleware before group() [OK]
Hint: Chain prefix() and middleware() before group() [OK]
Common Mistakes:
  • Passing closure directly to prefix() or middleware()
  • Using group() twice incorrectly
  • Mixing array and method chaining syntax
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard