我一直在成功将根路径(/)用作路由通配符,直到我决定将前端文件移动到前缀(/ crm)后。之后,我得到了404,并且不知道如何解决。我需要通配符来捕获我的Javascript前端路由(/ crm / orders / details / 12345),否则将导致404。
因此,当我删除 prefix('crm')时,使用以下代码设置的所有内容都可以正常运行。或者,当我删除 {any} 以及匹配的正则表达式时,它会在部分深度的路由上部分起作用( / crm 有效,但 / crm / orders 不)。
但是当我同时拥有前缀和通配符时, / crm 给我一个404。
我该如何配置?
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', '.*');
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', '.*');
php artisan route:list 的输出如下
| Domain | Method | URI |Name | Action | Middleware |
*snap*
| | GET|HEAD | crm/{any} | | Closure | |
*snap*
答案 0 :(得分:0)
您需要将{any}
配置为可选参数。在您的特定情况下,该路线将仅捕获crm/something
条路线(其中某些路线可能属于一个或多个路段)。
Route::prefix('crm')->group(function () {
Route::get('/{any?}', function () {
dd("I am here");
})->where('any', '.*');
});
但是,如果您将{any}
添加为可选内容,它也会捕获/crm
。这是你想要的?