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

Laravel重定向未指向目标基础URL问题求助

解决Laravel重定向缺失子目录路径的问题

我懂你现在的糟心情况:明明要跳转到http://mydomain.localhost/myfolder/public/test,结果用redirect()->route('test.index', $domain)直接跳到了http://mydomain.localhost/test,少了关键的myfolder/public部分。咱们来一步步搞定这个问题:

1. 先把.env里的APP_URL配置对

Laravel生成所有URL都会参考.env文件里的APP_URL变量,这是最核心的一步。你需要把它改成你应用实际的根访问路径:

APP_URL=http://mydomain.localhost/myfolder/public

改完之后记得清除配置缓存,不然旧的配置还会生效:

php artisan config:clear

2. 修正路由定义的小错误

顺便提一句,你当前的路由写法里有个小问题:那个处理$account的闭包不该放在resource的middleware数组里。正确的写法应该是这样:

Route::group(['domain' => '{account}.localhost'], function () {
    Route::resource('/test', 'testController', ['middleware' => 'Subdomain']);
});

如果要处理子域名参数的逻辑,建议把它放到Subdomain中间件里,或者在路由组的回调里单独处理,别跟middleware混在一起。

3. 验证路由生成是否正确

改完配置后,你可以用php artisan route:list命令查看所有路由的详细信息,找到test.index这条路由,确认它的生成URL是不是包含了/myfolder/public前缀。如果这里显示的路径是对的,那重定向就不会有问题了。

备选方案:给路由组加前缀(应急可用)

如果APP_URL配置后还是没生效,你可以临时给路由组加上固定前缀来强制路径:

Route::group(['domain' => '{account}.localhost', 'prefix' => 'myfolder/public'], function () {
    Route::resource('/test', 'testController', ['middleware' => 'Subdomain']);
});

不过这种方式不够灵活,因为前缀是和部署环境绑定的,不如用APP_URL配置来得优雅,所以优先推荐第一种方法。

内容的提问来源于stack exchange,提问作者paranoid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:45:14