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-for-any-request 包含的路由晚。那么,如何解决呢?我怎么能把这个
Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');
真的到底是什么?
解决方案
我的路由文件中的通用 slug 也有类似的问题。我设法将 slug 的模式限制为字母数字字符(包括破折号、连字符和斜杠*),但排除了 Nova 路由(nova-api
和nova-vendor
)以及管理面板的 Nova 路径(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
.
推荐阅读
- python - 给定边界框的人脸验证
- python - 有没有办法在grafana中显示db2数据
- reactjs - 内部特定路线上的上下文提供者
- javascript - Javascript函数两个打开的窗口不起作用
- java - 打印数组内容时如何打印数组中的位置?
- java - 处理消费者异常 Rabbit MQ Micronaut 2.2.1
- java - 找不到 Java 代理的 Premain-Class 清单属性
- javascript - 有没有其他方法可以重置字段
- jquery - MVC JQuery/AJAX 如何将数组发送到控制器
- apache - 使用 HTAaccess 更改网站链接