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

Laravel路由404错误:本地Windows正常,Linux虚拟主机报错求助

解决Windows正常、Linux下路由404的问题

这个问题的核心原因是Linux文件系统是大小写敏感的,而Windows不是,再加上路由和链接代码里的几个小错误,才导致部署到Linux后出现404。下面是具体的修复步骤:

1. 修正路由中的控制器名称错误

看你的路由代码:

Auth::routes(); 
Route::get('/curries','CurriessController@index')->name('curries'); 
Route::resource('/curries','CurriesController');

第一条路由里的CurriessController多了一个s!在Windows下,系统会忽略大小写和拼写的细微差异,能找到对应的CurriesController.php文件,但Linux会严格匹配文件名,找不到CurriessController.php就会返回404。把它改成正确的CurriesController即可:

Auth::routes(); 
Route::get('/curries','CurriesController@index')->name('curries'); 
Route::resource('/curries','CurriesController');

另外,其实Route::resource已经包含了index方法的路由,你可以考虑删掉重复的Route::get('/curries',...),避免路由冲突。

2. 修正视图中的链接路由

你尝试的route('curry.index', $curry->id)有两个问题:

  • 资源路由生成的单个资源展示路由名是curries.show(不是curry.index)
  • 传递参数的方式不对,正确的写法应该是:
    <td><a href="{{ route('curries.show', $curry) }}">{{ $curry->curry_title }}</a></td>
    
    或者手动传递id参数:
    <td><a href="{{ route('curries.show', ['curry' => $curry->id]) }}">{{ $curry->curry_title }}</a></td>
    

3. 确认控制器文件命名正确

确保你的控制器文件名为CurriesController.php,Linux下文件名的大小写必须和路由里的控制器名完全一致——比如不能写成curriescontroller.php或者Curriescontroller.php,否则系统会找不到文件。

4. 清除Linux服务器上的路由缓存

部署到Linux后,运行以下命令清除路由缓存,确保新的路由生效:

php artisan route:clear

做完这些步骤后,你的路由应该就能在Linux环境下正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:21:48