Laravel根路由('/')无法访问但其他路由正常,如何修复?
Laravel根路由无法访问问题解决
问题原因
你把根路由的永久重定向规则放在了auth中间件组内,这意味着只有已登录用户才能触发这个重定向。未登录用户访问/时,auth中间件会拦截请求,但此时根路由本身受中间件保护,无法被正常匹配,最终导致浏览器提示无法访问站点。
解决方案
方案1:将重定向路由移出中间件组
把根路由的重定向规则放到auth中间件组外面,这样无论用户是否登录,访问/都能触发重定向到/home:
Auth::routes(); // 移出auth中间件组 Route::permanentRedirect('/', '/home'); Route::middleware('auth')->group(function () { Route::get('/home', [HomeController::class, 'index'])->name('home'); });
方案2:根据登录状态处理根路由
如果希望未登录用户访问/时跳转到登录页,已登录用户跳转到/home,可以用以下逻辑替换重定向规则:
Auth::routes(); Route::get('/', function () { return Auth::check() ? redirect()->route('home') : redirect()->route('login'); }); Route::middleware('auth')->group(function () { Route::get('/home', [HomeController::class, 'index'])->name('home'); });
内容的提问来源于stack exchange,提问作者Fahrizal2408
相关产品推荐
相关产品推荐

