如何除“/新星”途径,如果我有任何请求匹配“任何”路线

问题描述 投票:1回答:1

我会根据laravel新星做出自己的CMS。现在我正在做一个“网页”功能。我会把我的网页作为pages是将包含url列的表的行。在我routes/web.php文件的末尾,我有与任何路由匹配的路由:

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

myRoute方法我将捕获的URL,并试图找到这个网址数据库的页面;一切工作正常,但是当我键入<domain_of_my_site>/nova以获得管理面板,新的路由晚于我的路线换任何请求包括我有404因为,的。那么,如何解决这个问题?我怎样才能把这个

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

真的结束了吗?

laravel laravel-nova
1个回答
1
投票

我曾在我的路线文件通用蛞蝓类似的问题。我设法限制用于蛞蝓字母数字字符(包括虚线,连字符和斜线*),但排除诺瓦路由(nova-apinova-vendor)以及新星路径管理面板(nova)的图案。

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

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

而对于在{page}文件RouteServiceProvider app/Providers/RouteServiceProvider.php模式:

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

    parent::boot();
}

*)请注意,这种模式也让喜欢/page/one/two蛞蝓。

© www.soinside.com 2019 - 2024. All rights reserved.