好吧,我的路线有问题,所有与Modules文件夹有关的请求均不起作用。我正在使用laravel-modules软件包。
在我的project-folder/routes/web.php
中,我必须使用通配符路由,因为我的前台位于VueJs SPA中:
Route::get('/{any}', 'ApplicationController')->where('any', '.*');
好的,我在我的api.php
主文件中使用了API路由,工作正常,但是当我放入Modules/ModuleName/Routes/api.php
时,该路由不起作用。
如果我从主Route::get('any')
中删除了web.php
,它会起作用,
我认为路线存在某种冲突。
+-----------+------------------------------+--------------------------------------------------------------------------------+--------------+
| Method | URI | Action | Middleware |
+-----------+------------------------------+--------------------------------------------------------------------------------+--------------+
| GET|HEAD | api/opportunity/channel-sale | App\Modules\Opportunity\Http\Controllers\OpportunityController@channelSaleList | api,auth:api |
| GET|HEAD | api/opportunity/flow-steps | App\Modules\Opportunity\Http\Controllers\OpportunityController@flowStepList | api,auth:api |
| GET|HEAD | api/opportunity/kanban | App\Modules\Opportunity\Http\Controllers\OpportunityController@kanbanList | api,auth:api |
| GET|HEAD | api/user | Closure | api,auth:api |
| GET|HEAD | {any} | App\Http\Controllers\ApplicationController | web |
+-----------+------------------------------+--------------------------------------------------------------------------------+--------------+
我不知道该怎么办。
答案 0 :(得分:0)
您在这里有两个选择,可以将一个正则表达式传递给any
路由,以忽略带有API前缀的路由
Route::get('/{any}', 'ApplicationController')->where('any', '^(?!api).*$');
或将备用广告设置为ApplicationController
Route::fallback('ApplicationController');
来自the docs
使用Route::fallback
方法,您可以定义一个路由,当没有其他路由与传入请求匹配时将执行该路由。通常,未处理的请求将通过应用程序的异常处理程序自动呈现“ 404”页面。但是,由于您可以在fallback
文件中定义routes/web.php
路由,因此web
中间件组中的所有中间件都将应用于该路由。您可以根据需要随意向此路由添加其他中间件:
Route::fallback(function () {
//
});
后备路由应始终是应用程序注册的最后一条路由。