duanjianxiu9400 2019-01-31 13:19
浏览 460
已采纳

使用前缀时路由URI通配符

I have been using a route wildcard for my root path (/) successfully until I decided to move my frontend files behind a prefix (/crm). After that I am getting 404's and have no idea how to solve it. I need the wildcard as a catch all for my Javascript frontend routes (/crm/orders/details/12345) which otherwise result in a 404.

So when I remove prefix('crm') everything as set up with the below code works fine. Or when I remove {any} plus the matching regex, it works partially, on one level deep routes (/crm works, but /crm/orders does not).

But when I have both the prefix and wildcard /crm gives me a 404.

How do I need to configure this?

Works

Providers/RouteServiceProvider.php:

Route::namespace('App\Http\Controllers')
  ->group(base_path('routes/crm.php'));

routes/crm.php

Route::get('/{any}', function ()
{
    return view('crm');
})->where('any', '.*');

Does not work

Providers/RouteServiceProvider.php:

Route::prefix('crm')
  ->namespace('App\Http\Controllers')
  ->group(base_path('routes/crm.php'));

routes/crm.php

Route::get('/{any}', function ()
{
    return view('crm');
})->where('any', '.*');

Output of php artisan route:list is as follows

| Domain | Method | URI |Name | Action | Middleware  |
*snap*
| | GET|HEAD | crm/{any} | | Closure | |
*snap*
  • 写回答

1条回答 默认 最新

  • duanjianlu0506 2019-01-31 13:50
    关注

    You need to configure {any} as an optional parameter. In your particular case, the route will only catch crm/something routes (where something can be of one or more segments).

    Route::prefix('crm')->group(function () {
        Route::get('/{any?}', function () {
            dd("I am here");
        })->where('any', '.*');
    });
    

    However, if you add the {any} as optional, it will also catch /crm. Is this what you are looking for?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包
  • ¥15 comsol压电材料数据
  • ¥35 用python实现除法算法中goldschmidt算法
  • ¥15 汇编代码转换成C代码
  • ¥15 除法算法中的归一化具体是怎么变的?