Laravel项目登录注册路由突然提示NOT FOUND,其他路由正常如何解决
解决方案
- 首先执行命令查看当前已注册的路由,确认login、register命名路由是否存在:
如果搜索不到对应路由,直接排查路由定义文件:php artisan route:list- 若使用Laravel默认Auth脚手架,检查
routes/web.php中是否存在Auth::routes()代码,被注释/删除的话补回即可。 - 若使用Breeze/Jetstream等Auth工具包,检查
routes/web.php中是否引入了Auth路由文件,比如Breeze默认需要存在require __DIR__.'/auth.php';,同时确认routes/auth.php文件未被删除。
- 若使用Laravel默认Auth脚手架,检查
- 清除路由缓存:如果项目开启了路由缓存,修改路由后未更新缓存会导致404,执行以下命令清理:
php artisan route:clear # 生产环境清理后需要重新生成缓存 php artisan route:cache - 检查路由冲突:确认你没有在Auth路由之前定义通配符路由,比如
Route::get('/{param}', ...)这类路由会优先匹配/login、/register路径,导致路由被拦截返回404,通配符路由必须放在路由文件的最后位置。 - 检查路由属性:如果是自定义登录注册路由,确认路由命名正确:GET请求的登录路由需要指定
->name('login'),GET请求的注册路由需要指定->name('register'),同时没有给这两个路由加错误的前缀、auth中间件限制。 - 特殊场景验证:如果其他路由都正常,只有这两个路由404,可以尝试直接访问
你的域名/index.php/login,如果可以访问则说明是服务器重写规则的小概率异常,重新配置Apache的.htaccess或Nginx的伪静态规则即可。
内容的提问来源于stack exchange,提问作者Dave Budah
相关产品推荐
相关产品推荐

