URL 生成器将 "localhost" 放在 Laravel 中的域之前

URL generator putting "localhost" before domain in Laravel

我一直在尝试使用 Laravel 中的 signed URLs 通过电子邮件向用户发送验证 link。它似乎工作正常,但是 link 在使用 URL facade 构建时出现错误。

public function toMail($notifiable)
{
    $url = URL::signedRoute('confirm', ['user' => $this->user->id]);

    return (new MailMessage)
                ->subject('Activate your email address')
                ->line('In order to use the application, please verify your email address.')
                ->action('Activate your account', $url)
                ->line('Thank you for using our application!');
}

在电子邮件中,link 看起来像:

http://localhost/mydomain.com/confirm/14?signature=3ba4d86827717440f70a3b2f60c913b6e84d550cb9fce8de04a8ba359833ac7c

"localhost" 部分不应该存在。但是,如果我在 URL 栏中手动删除它,我相信签名的 URL 东西是我操纵的 URL 并给我一个 401 错误。我 运行 在本地主机环境中使用,但我使用 Laragon 的自动虚拟主机,这样我仍然可以 运行 使用域。

有什么建议吗?

变化:

APP_URL=example.com

收件人:

APP_URL=http://example.com

我想不指定 "http://" 会使它在前面附加 localhost。希望这对某人有所帮助!

有时,如果您在虚拟环境或 docker 容器中工作,仅设置 APP_URL 是行不通的。请尝试以下步骤。

第 1 步:在 .env 文件中设置您的域。 (不要忘记双引号)

APP_URL="http://yourdomain.com"

第 2 步:在生成签名路由之前添加以下行

URL::forceRootUrl(\config('app.url'));

第 3 步:(可选)如果要强制执行 https 方案

,请添加以下行
URL::forceScheme('https');