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

Laravel路由仅半数生效求助:部分路径返回404错误

解决Laravel路由404问题的实操步骤

看起来你遇到的404问题主要来自路由定义错误、访问路径拼写失误以及部分路由缺失,我来帮你一步步排查修复:

1. 修复重复与缺失的路由定义

先看你的路由代码,这里有两个核心问题:

  • 重复定义了/addquestion路由:
    Route::get('/addquestion','PagesController@questions');
    Route::get('/addquestion','PagesController@addquestion');
    
    Laravel会用后面的路由覆盖前面的,导致PagesController@questions方法永远不会被触发。
  • 你访问的/questions路径没有对应的路由配置!你在按钮和浏览器直接访问的是/questions,但当前路由里只有/addquestion,这必然返回404。

调整路由文件为如下内容:

Route::get('/', 'PagesController@index');
Route::get('/index', 'PagesController@index');
Route::get('/hub','PagesController@hub');
Route::get('/basicmod','PagesController@basicmod');
// 给questions页面单独配置路由
Route::get('/questions','PagesController@questions');
// 保留addquestion的独立路由
Route::get('/addquestion','PagesController@addquestion');
Route::get('/introtest','TestController@index');

2. 修正访问路径的拼写错误

看你的按钮跳转代码:

<button onclick="window.location.href='http://localhost/microskills/public/hun/'"></button>

这里的hun/是拼写错误,你的路由是/hub,应该改成:

<button onclick="window.location.href='http://localhost/microskills/public/hub'"></button>

修改后,第二个按钮的/questions路径也能匹配到新配置的路由了。

3. 检查服务器URL重写规则(关键环节)

如果上述修改后仍有404,大概率是服务器的URL重写未配置正确——Laravel需要重写规则将请求导向public/index.php:

  • 若使用Apache:确保mod_rewrite模块已开启,并且项目根目录的.htaccess文件(没有的话从Laravel默认的public目录复制)包含以下规则:
    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews -Indexes
        </IfModule>
    
        RewriteEngine On
    
        # 处理授权头
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # 移除末尾斜杠
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # 将请求转发到前端控制器
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    
  • 若使用Nginx:在服务器配置中添加如下location规则:
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    

4. 清除路由缓存(可选操作)

如果你之前执行过php artisan route:cache,新添加的路由不会立即生效,需要清除缓存:

php artisan route:clear

完成以上步骤后,再测试各个页面的访问,应该就能正常加载了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:28:14