Laravel未登录时重定向至public/login而非login的问题求助
解决Laravel重定向public后认证跳转异常的问题
嘿,这个问题我之前踩过一模一样的坑!本质是Laravel的URL生成器没有正确识别你的站点根路径,导致跳转逻辑自动带上了public前缀。咱们一步步来修复:
1. 确保根目录的.htaccess规则正确
首先,确认你放在项目根目录(不是public文件夹内)的.htaccess是这个配置,它会把所有请求转发到public目录,同时保留原始URI:
<IfModule mod_rewrite.c> RewriteEngine On # 将所有请求转发到public目录,保留完整请求路径 RewriteRule ^(.*)$ public/$1 [L] </IfModule>
注意:public文件夹里的默认.htaccess不要动,保持Laravel自带的规则即可。
2. 修正Laravel的URL配置
Laravel需要知道你的站点根URL,才会生成正确的跳转链接:
- 打开
.env文件,更新APP_URL为你的域名:APP_URL=https://mydomain.com - 同步修改
config/app.php里的对应配置(确保和.env一致):'url' => env('APP_URL', 'https://mydomain.com'),
3. 确保认证中间件用正确的跳转逻辑
打开app/Http/Middleware/Authenticate.php,检查redirectTo方法,确保它使用命名路由而不是硬编码的URL,这样Laravel会自动基于配置的APP_URL生成正确的跳转地址:
protected function redirectTo($request) { if (! $request->expectsJson()) { return route('login'); // 用命名路由,不要写'/public/login' } }
4. 清理Laravel缓存
配置修改后,需要清理缓存让新配置生效:
php artisan config:clear php artisan route:clear php artisan cache:clear
做完这些步骤后,再测试:未登录访问mydomain.com/admin会正确跳转到mydomain.com/login,登录后也会正常跳转回目标页面,不会再出现public前缀的问题啦。
内容的提问来源于stack exchange,提问作者Brigo
相关产品推荐
相关产品推荐

