如果我有 '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-api
和 nova-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
我打算基于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-api
和 nova-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
.