Laravel路由正则表达式约束-不能按预期工作

时间:2018-11-30 16:23:32

标签: laravel laravel-nova

简短版本:

为什么我的正则表达式不能使用:

->where('user', '^(?!(nova|nova-api)$).*$');

但这可行:

->where('user', '^(?!nova).*$');

长版

我安装了Laravel Nova。

Nova在最末端(在web.php之后)注册其路由。因为我的用户具有路由domain.com/username,所以这会导致问题。

现在,domain.com / nova无法正常工作,但我将其移至nova.domain.com子域。但是,API仍然会导致问题。

为解决此问题,我添加了这些“ where”约束,现在一切正常。

//web.php
Route::prefix('/{user}')->group(function () {

    Route::get('/', 'Profile\ProfileController@index');

    Route::view('/{offer}', 'pages.offering.food.show') 
        ->where(['offer' => '.*'])
        ->where('user', '^(?!nova).*$');
});

但是会导致以下问题:正则表达式noval之类的东西匹配。 (看here

我的目标是仅 不匹配nova或nova-api。

我当前针对此问题的正则表达式看起来像this

^(?!(nova|nova-api)$).*$

我更新了正则表达式,但是由于某种原因,我收到了404的ajax调用:https://nova.mydomain.test/nova-api/cards

//web.php
Route::prefix('/{user}')->group(function () {

    Route::get('/', 'Profile\ProfileController@index');

    Route::view('/{offer}', 'pages.offering.food.show')
        ->where([
           'anyfood' => '.*',
           'user' => '^(?!(nova|nova-api)$).*$'
        ]);
});

我真的不明白为什么它不起作用。

0 个答案:

没有答案