Laravel 9项目新增路由无法访问,出现404错误求助
清除路由缓存:Laravel会缓存路由以提升性能,新增路由后旧缓存不会自动更新。在Laragon终端执行:
php artisan route:clear
执行后直接访问新路由,无需重启服务。校验路由定义语法:复制现有路由后修改的部分,要确保语法无错误,比如:
旧路由示例:Route::get('/old-path', [OldController::class, 'index'])->name('old.route');
新路由示例:Route::get('/old-path-new', [OldController::class, 'index'])->name('new.route');
检查是否漏写括号、逗号,以及控制器类是否在文件顶部正确引入(如use App\Http\Controllers\OldController;)。确认路由已注册:执行
php artisan route:list,在输出结果中搜索新路由的路径,确认它是否被系统正确加载。如果搜不到,说明web.php中存在语法错误(比如未闭合的大括号),导致路由文件未被完整解析。检查public/.htaccess配置:确保项目public目录下的.htaccess文件包含Laravel默认的重写规则,避免Apache无法将请求转发到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>核对访问路径:确认浏览器地址栏的路径和路由定义完全一致,注意是否存在多打/少打字符、大小写错误(虽Windows环境Apache不区分大小写,但仍需避免不必要的问题)。
清除全量缓存:若上述步骤无效,可清除应用缓存和配置缓存:
php artisan cache:clearphp artisan config:clear
内容的提问来源于stack exchange,提问作者khalifa R.

