【发布时间】:2020-07-30 21:40:02
【问题描述】:
我有下一个代码:
Route::get('/{lang}/user/sort-by-{class}', function ($lang,$class) {
return view('users.list',compact("lang","class"));
})->where('class', '[a-z]+');
Route::get('/{lang}/user/{user}', function ($lang,$user) {
return view('users.user',compact("lang","user"));
});
当 where 条件为 false 时,当 sort-by- 是例如数字时,如何将其直接发送到 404?问题是它以用户身份进入二级路由。
例如:
/en/user/sort-by-name 没问题
/en/user/sort-by-4446 必须显示 404 页面
我知道我可以在他们之间做另一条路线
Route::get('/{lang}/user/sort-by-{class}', function ($lang,$class) {
return \Response::view('errors.404',array(),404);
})->where('class', '.*');
但这看起来很丑,我想同一句话
【问题讨论】:
-
为什么你使用其他路由来显示错误?我认为如果您的路线与 where() 条件不匹配,它将自动通过 404 页面。您只需在资源目录中创建“错误”文件夹,然后在该文件夹中创建 404.blade.file。
-
问题是我有另一个有效的路由器之后:Route::get('/{lang}/user/{user}', function ($lang,$user) .. then它进入......我会更好地解释它,谢谢。
-
我已经更好地编辑和评论了它。
-
我认为您应该更改
user的路线,例如Route::get('/{lang}/user/user_{user}' -
[^a-z]+与正则表达式相反。