如果我有与任何请求匹配的“任何”路线,如何排除“ / nova”路线

时间:2019-02-05 19:10:44

标签: laravel laravel-nova

我将基于laravel nova制作自己的CMS。现在,我正在使“页面”起作用。我将把页面放在包含pages列的表url的行中。在routes/web.php文件的末尾,我有与任何路由都匹配的路由:

Route::get( .... );
Route::post( .... );
Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');

myRoute方法中,我将捕获一个URL并尝试在数据库中查找具有该URL的页面;一切正常,但是当我输入<domain_of_my_site>/nova进入管理面板时,我得到404。因此,nova的路由比我的任何请求路由都晚。那么,如何解决呢?我该如何放置

Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');

真的要结束吗?

1 个答案:

答案 0 :(得分:1)

我的路由文件中的通用子弹也有类似的问题。我设法将子弹的模式限制为字母数字字符(包括破折号,连字符和斜杠*),但排除了Nova路由(nova-apinova-vendor)以及通往管理员的Nova路径面板(nova)。

routes/web.php文件的外观如下:

Route::get('/{page}', 'PageController@myRouter');

以及{page}文件中RouteServiceProviderapp/Providers/RouteServiceProvider.php的模式:

public function boot()
{
    Route::pattern('page', '^(?!nova|nova-api|nova-vendor).[a-zA-Z0-9-_\/]+$');

    parent::boot();
}

*)请注意,此模式还允许使用/page/one/two之类的子弹。