我会根据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_\-\/]+');
真的结束了吗?
我曾在我的路线文件通用蛞蝓类似的问题。我设法限制用于蛞蝓字母数字字符(包括虚线,连字符和斜线*),但排除诺瓦路由(nova-api
和nova-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
蛞蝓。