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

Laravel路由链接点击出现404 NotFound错误的解决求助

问题:Laravel路由匹配但点击链接出现404 NotFound错误

问题详情

我正在学习PHP和Laravel搭建网站,创建了inputdata视图,想要从该视图跳转到KelompokSupir视图,因此创建了DatapenggunaController控制器实现跳转逻辑,相关代码如下:

控制器代码(DatapenggunaController的groupAnalysis方法)

public function groupAnalysis(Request $request)
{
    Log::info('groupAnalysis method called');
    
    $kategori = $request->query('kategori');
    $tglFrom = $request->query('tgl_from');
    $tglTo = $request->query('tgl_to');

    $query = Datapengguna::query();

    if ($kategori) {
        $query->where('jabatan', $kategori);
    }

    if ($tglFrom && $tglTo) {
        $query->whereBetween('tgllahir', [$tglFrom, $tglTo]);
    }

    $datapenggunas = $query->get();

    $avg_penggunas = $datapenggunas->map(function ($pengguna) {
        $totalRataRata = $pengguna->datapengukurans->sum('ratarata');
        $countDatapengukurans = $pengguna->datapengukurans->count();
        $avg_pengguna = $countDatapengukurans ? $totalRataRata / $countDatapengukurans : 0;
        return [
            'nama_observant' => $pengguna->nama_observant,
            'avg_pengguna' => $avg_pengguna
        ];
    });

    return view('kelompokSupir', [
        'avg_penggunas' => $avg_penggunas,
        'title' => 'Kelompok Supir Analysis',
        'kategori' => $kategori,
        'tglFrom' => $tglFrom,
        'tglTo' => $tglTo
    ]);
}

路由配置

Route::get('/Data/KelompokSupir',[DatapenggunaController::class,'groupAnalysis']) -> name ('datapengguna.groupAnalysis');

视图链接(inputdata视图中)

<li class="nav-item">
    <a class="nav-link" href="{{ route('datapengguna.groupAnalysis')}}">Analisis Data Kelompok</a>
</li>

点击链接时出现404 NotFound错误,但执行php artisan route:list后确认路由匹配:

GET|HEAD   Data/KelompokSupir ............. datapengguna.groupAnalysis › DatapenggunaController@groupAnalysis

已执行php artisan route:clear和php artisan cache:clear清除缓存,错误仍存在,求解决方案。


解决方案排查步骤

1. 检查路由路径大小写问题

Laravel在Linux/Unix环境下路由大小写敏感,你的路由配置是/Data/KelompokSupir,若实际访问时链接生成的路径大小写不一致会导致404。可以:

  • 将路由路径改为全小写:Route::get('/data/kelompoksupir', [...]),同步更新路由名称调用;
  • 确保视图生成的链接路径大小写和路由完全一致。

2. 确认视图文件存在

控制器返回view('kelompokSupir'),需检查resources/views/目录下是否存在kelompokSupir.blade.php文件,文件名大小写必须完全匹配(不能写成KelompokSupir.blade.php)。

3. 检查服务器URL重写配置

  • Apache环境:确保mod_rewrite模块已启用,项目根目录的.htaccess配置正确(Laravel默认配置如下):
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  • Nginx环境:确保配置文件包含正确的重写规则:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

4. 排查路由冲突

检查routes/web.php中是否有其他路由定义在当前路由之前,且匹配类似路径(比如通配符路由Route::get('/Data/{any}', ...)),导致请求被拦截。

5. 直接访问路由路径测试

在浏览器地址栏直接输入完整路由路径(如http://你的域名/Data/KelompokSupir),验证是否能正常访问,排除视图链接生成的问题。

6. 查看Laravel日志

检查storage/logs/laravel.log文件,搜索groupAnalysis:

  • 若无日志输出,说明请求未到达控制器,问题出在路由或服务器配置;
  • 若有日志输出,说明控制器已执行,可能是视图渲染环节出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:20:12