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

Laravel 12.x子域名环境下发送邮件后重定向路由404问题求助

Laravel 12.x子域名环境下发送邮件后重定向路由404问题求助

看起来你遇到的是子域名路由上下文在重定向时丢失的问题——路由本身是存在的,但Laravel生成重定向URL时没带上admin子域名,导致请求落到主域名下找不到对应路由,触发了404。下面是几个实用的排查和解决思路:

1. 先确认路由是否正确注册

首先运行这条命令,检查admin.users.index路由的完整信息:

php artisan route:list --name=admin.users.index

你应该能看到这条路由的Domain列显示为admin.mysite.test,URI是/users,Name是admin.users.index。如果这条路由没出现在列表里,先检查路由文件的语法(比如有没有遗漏括号),然后清除路由缓存:

php artisan route:clear

2. 显式指定子域名生成路由

问题大概率出在redirect()->route('admin.users.index')这行代码上。虽然你的控制器属于admin子域名的路由组,但Laravel有时候不会自动继承当前请求的子域名上下文(尤其是执行完邮件发送这类操作后)。你可以手动在路由生成时指定domain参数:

修改store方法里的重定向代码:

return redirect()->route(
    'admin.users.index',
    [], // 路由参数(这里无参数,留空数组即可)
    ['domain' => 'admin.' . env('SITE_URL')] // 显式指定子域名
)->with('success-message', 'Record inserito con successo.');

或者更灵活一点,直接从当前请求中获取子域名(避免硬编码):

return redirect()->route(
    'admin.users.index',
    [],
    ['domain' => request()->getHost()]
)->with('success-message', 'Record inserito con successo.');

这样生成的重定向URL就会是http://admin.mysite.test/users,而非主域名下的地址,自然就能找到对应的路由了。

3. 补充排查:会话与配置缓存

你的.env里SESSION_DOMAIN=.mysite.test是正确的(支持跨子域名会话),但如果之前改过相关配置,记得清除缓存确保配置生效:

php artisan cache:clear
php artisan config:clear

4. 排查邮件类是否干扰请求上下文

虽然可能性较低,但如果你的NewUserCreated邮件类里有修改请求、路由相关的逻辑,可能会意外改变当前请求的上下文。可以先临时注释掉邮件发送代码,测试重定向是否正常——如果正常,那就是邮件类里的逻辑有问题,需要检查邮件类的代码。

按照这个步骤试一下,应该能解决你的重定向404问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 13:14:52