如何在 laravel 路由中创建排除某些 slug 的 slug 路由?

Sag*_*tam 4 php routes slug laravel

我目前正在跟踪路线。

$router->get('/contact-us','HomeController@contactUs')->name('contact-us');
$router->get('/about','HomeController@about')->name('about');
Run Code Online (Sandbox Code Playgroud)

现在,我想让一般页面可以通过以下路线访问,

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

但主要问题是联系我们,关于页面与 slug 路由匹配,并且调用了错误的控制器。有没有什么方法可以从一般页面路由中排除此类 slugs。

pis*_*tor 6

您可以向路线添加一个模式,其中排除术语contact-us和,如下所示:about

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

有关正则表达式的说明,请参见此处

通过这种方式,路由定义的顺序没有任何影响。