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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:48:53