如果我有 'any' 路由与任何请求匹配,如何排除 '/nova' 路由

How to except '/nova' route if I have 'any' route that matches with any request

我打算基于laravel nova 制作自己的CMS。现在我正在使 'Pages' 起作用。我会将我的页面作为包含 url 列的 table pages 的行。在我的 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_\-\/]+');

到底是真的吗?

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

这是 routes/web.php 文件的样子:

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

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

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

    parent::boot();
}

*) 请注意,此模式还允许像 /page/one/two.

这样的 slug