Laravel+Vue.js路由配置异常求助:API请求触发错误控制器
问题解决方法
核心原因
你在web.php中配置的通配符路由Route::get('/{page}', IndexController::class)->where('page', '.*')会匹配所有GET请求,包括/api开头的接口请求,导致接口请求被错误转发到返回主页的IndexController,而非api路由中对应的PartIndexController。
解决方案
修改web.php中的通配符路由,添加正则条件排除/api开头的路径,确保接口请求能被api路由正常处理:
Route::get('/{page}', IndexController::class)->where('page', '^(?!api).*$');
这个正则表达式^(?!api).*$的作用是:匹配所有不以api开头的路径。这样/api/parts这类接口请求会跳过该路由,被api.php中的路由正确匹配;而前端路由如/parts这类路径依然会被该路由捕获,返回主页,解决页面刷新404的问题。
验证步骤
- 保存修改后的web.php路由配置
- 重新发起
axios.get('/api/parts/')请求,此时会触发PartIndexController的逻辑 - 刷新前端/parts页面,依然能正常返回主页,不会出现404错误
内容的提问来源于stack exchange,提问作者Павел Жуков
相关产品推荐
相关产品推荐

