Laravel 重置密码时域错误 link

Laravel wrong domain in reset password link

我收到一个错误的 URL 由 laravel 5.8 中的 sendResetLinkResponse 控制器生成两次域。

https://api.domain.org/domain.org/password/reset/....

但应该是

https://api.domain.org/password/reset/....

APP_URL设置为

APP_URL=domain.org

我使用自定义配置来作为端点 api.domain.org 而不是 www.domain。org/api

我的配置是:

protected function mapApiRoutes() {

 Route::domain('api.' .  env('APP_URL'))
   ->middleware('api')
   ->namespace($this->namespace)
   ->group(base_path('routes/api.php'));
}

我该如何解决?

我建议将您的子域设置得更加动态,即

Route::domain('api.{domain}')
    ->middleware(['api', function ($request, $next) {
        $request->route()->forgetParameter('domain');

        return $next($request);
    }])
    ->namespace($this->namespace)
    ->group(base_path('routes/api.php'));

以上基本上允许任何域名,然后中间件只是将其从您的路由参数中删除,这样它就不会混淆您的路由闭包或控制器方法。

您还需要将以下内容添加到服务提供商的启动方法中:

Route::pattern('domain', '[a-z0-9.]+');

这样您就可以使用 APP_URL 作为站点的域名。