首页 > 解决方案 > 如何在 laravel 路由中创建不包括某些 slug 的 slug 路由?

问题描述

我目前有以下路线。

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

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

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

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

标签: phplaravelroutesslug

解决方案


您可以将模式添加到您的路线,其中条款contact-usabout被排除在外,如下所示:

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

有关正则表达式的解释,请参见此处

这样,路由定义的顺序没有任何影响。


推荐阅读