2

I've following routes currently.

$router->get('/contact-us','HomeController@contactUs')->name('contact-us');
$router->get('/about','HomeController@about')->name('about');

Now, I want to make general pages accessible form following route,

$router->get('/{slug}','SomeController@about')->name('general-page');

But main problem is contact us and about page matched with slug route and wrong controller is called. Is there any way to exclude such slugs from general page route.

Sagar Gautam
  • 7,648
  • 5
  • 36
  • 65

1 Answers1

4

You could add a pattern to your route, where the terms contact-us and about are excluded, like this:

$router->get('/{slug}','SomeController@about')
    ->where('slug', '^((?!about|contact-us).)*$')
    ->name('general-page');

For an explanation of the regex, see here

In this way the order of the route definitions has no consequence.

piscator
  • 5,521
  • 3
  • 19
  • 29