You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel路由访问报错404:页面无法找到问题求助

解决Laravel页面找不到(404)的问题

嘿,我看到你遇到了Laravel路由返回404的问题,咱们来一步步找出问题并解决:

核心问题分析

你的路由定义里有两个关键错误,导致路由无法正确匹配:

  1. 路由参数的写法错误:{$task}里的美元符号是多余的,Laravel路由参数只需要用{参数名}的格式,不需要加$
  2. 路由参数名和闭包参数不匹配:路由里写的是{$task}(错误写法),但闭包用的是$id,这会导致参数传递异常

修复方案

方案1:修正路由参数写法并匹配参数名

把路由里的{$task}改成{id}(或者保持{task}但调整闭包参数),同时确保查询逻辑正确:

Route::get('/tasks/{id}', function ($id) {
    // 从数据库查询对应id的任务
    $task = DB::table('tasks')->find($id);
    
    // 可选:如果没找到任务,手动返回404(Laravel也会自动处理,但显式判断更清晰)
    if (!$task) {
        abort(404, 'Task not found');
    }
    
    return view('tasks.show', compact('task'));
});

方案2:使用Laravel路由模型绑定(更优雅)

如果你的项目里有Task模型(app/Models/Task.php),可以用路由模型绑定自动完成查询,代码更简洁:

// 先引入Task模型
use App\Models\Task;

Route::get('/tasks/{task}', function (Task $task) {
    // Laravel会自动根据路由里的{task}值(即id)查询对应的Task记录
    // 如果找不到记录,会自动返回404页面
    return view('tasks.show', compact('task'));
});

额外检查点

  • 确保你访问的URL是正确的,比如http://your-domain/tasks/1,其中1是数据库tasks表中存在的记录的id值
  • 确认tasks表中有id和body字段,且对应记录的body值不为空
  • 视图文件show.blade.php的路径正确,应该放在resources/views/tasks/目录下

内容的提问来源于stack exchange,提问作者Mohan Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:21:13