Laravel 12 域名路由不生效极大概率是未清 config 缓存,因路由依赖的 APP_URL、SESSION_DOMAIN 等配置被硬编码进 Route::domain(),而 bootstrap/cache/config.php 未更新导致匹配失败;须严格执行 php artisan config:clear && php artisan config:cache && php artisan route:clear && php artisan route:cache。

是,Laravel 12 域名路由(如 Route::domain('api.example.com'))不生效,极大概率是因为没清 config 缓存。
Laravel 启动时默认读取 bootstrap/cache/config.php,而不是实时解析 .env 或 config/app.php。而域名路由往往依赖配置项——比如 APP_URL、SESSION_DOMAIN,甚至自定义的 config('app.api_domain') 这类值。一旦这些配置被硬编码进路由定义(例如 Route::domain(config('app.api_domain'))),但 config:cache 没更新,路由就会按旧值匹配,导致 404 或完全不注册。
✅ 怎么确认是 config 缓存惹的祸?
- 检查
bootstrap/cache/config.php是否存在 - 打开它,看里面
app.url、app.api_domain等键值是否和你刚改的.env或config/app.php一致 - 或在任意路由里加一行:
dd(config('app.api_domain'));,输出和.env对不上?那就是缓存没清
✅ 正确清理与重建顺序(必须严格)
php artisan config:clear php artisan config:cache php artisan route:clear php artisan route:cache
⚠️ 注意:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
-
config:clear不可跳过,尤其代码同步或环境切换后,旧缓存残留极易干扰 -
config:cache必须在route:cache之前——否则路由里config()调用会取不到值,甚至生成空路由表 -
route:cache会静默跳过闭包路由、Route::fallback()和带动态参数的domain()(如果内部用了未缓存的 config)
✅ 域名路由特别注意点
-
Route::domain()内部不能用env(),只能用config(),且该 config 必须已缓存 -
.env改了APP_URL=api.example.com,但没运行config:cache→config('app.url')仍返回旧值 → 域名路由匹配失败 - 多子域部署时,确保
SESSION_DOMAIN=.example.com这类配置也进了缓存,否则跨域 session 也会出问题
✅ 顺手一起清更稳当(开发环境推荐)
php artisan optimize:clear
它等价于依次执行:
-
route:clear -
config:clear -
view:clear cache:clear
适合改完配置、路由、视图后一键重置,避免“改了但没生效”的错觉。
不复杂但容易忽略


















