我具有用于匹配正确用户名的自定义正则表达式:
^(?=.{5,20}$)[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$
请参见demo
在这里您可以看到我的路线列表:
Route::middleware(['userActivity'])->group(function () {
Route::group(['prefix' => '{nickname}','where' => ['nickname' => '^(?=.{5,20}$)[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$']], function ($nickname) {
Route::name('user.')->namespace('User')->group(function () {
Route::middleware(['auth', 'company'])->group(function () {
Route::namespace('Vacancy')->group( function () {
Route::prefix('vacancy')->name('vacancy.')->group( function () {
Route::get('/manage', "VacancyController@manage")->name('manage');
Route::post('/save', "VacancyController@save")->name('save');
});
});
});
});
});
});
在这种情况下,我要转到路线user.vacancy.manage
:
http://website.com/user_1544080981/vacancy/manage
返回错误:
找不到404页
当我将正则表达式更改为:
^(?=.{5,30}$)[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$
注意:仅在正则表达式中将最小长度和最大长度从{5,20}
更改为{5,30}
通常,当我看到域名网址 length == 30
之后的部分网址时user_1544081143/vacancy/manage
但是正则表达式只能仅用于用户昵称,而不是不带域名的部分url。我的路线哪里有错误?
答案 0 :(得分:0)
正则表达式,在我看来,这是比上面更好的方法。
Route::any('{all}', function(){
return 'It Works';
})->where('all', '.*');
使用Route::fallback
方法,您可以定义一个路由,当没有其他路由与传入请求匹配时将执行该路由。通常,未处理的请求将通过应用程序的异常处理程序自动呈现“ 404 ”页面。但是,由于您可以在fallback
文件中定义routes/web.php
路由,因此web
中间件组中的所有中间件都将应用于该路由。当然,您可以根据需要随意向此路由添加其他中间件:
Route::fallback(function () {
//
});