Laravel8.6现有项目访问/pegawai路由返回404 Not Found排查求助
Laravel 8 路由返回404问题排查方案
- 路由写法适配问题:Laravel 8 版本开始,
RouteServiceProvider默认移除了默认的$namespace属性,你当前使用的字符串格式控制器路由写法Route::get('/pegawai','PegawaiController@index')默认无法匹配到正确的控制器,两种修复方案可选:- 改用类名写法:
Route::get('/pegawai', [\App\Http\Controllers\PegawaiController::class, 'index']) - 在
app/Providers/RouteServiceProvider.php中重新添加$namespace属性,赋值为App\Http\Controllers,即可兼容旧版字符串路由写法。这也是你新建测试项目运行正常的常见原因,多数测试项目会手动配置默认命名空间。
- 改用类名写法:
- 路由缓存问题:现有项目如果之前执行过路由缓存命令
php artisan route:cache,新增的路由不会自动生效,执行php artisan route:clear清除路由缓存即可,开发环境不建议开启路由缓存。 - 路由顺序/覆盖问题:
- 检查
web.php中是否有/{any}这类通配符路由写在当前路由之前,通配符路由会优先匹配导致后续路由失效 - 检查当前路由是否被包裹在带前缀的路由组中,比如路由组设置了
prefix('admin')的话,实际访问路径为/admin/pegawai而非/pegawai
- 检查
- 文件名大小写问题:确认控制器文件名和类名完全一致为
PegawaiController.php,Linux环境对大小写敏感,拼写不一致会导致找不到控制器。 - 服务器配置问题:可以先用Laravel内置服务
php artisan serve启动,访问http://127.0.0.1:8000/pegawai测试,排除Nginx/Apache的伪静态配置错误问题。
内容的提问来源于stack exchange,提问作者Lucas Futami
相关产品推荐
相关产品推荐

