Генератор URL, помещающий "localhost" перед доменом в Laravel
Я пытался отправить по электронной почте пользователям ссылку для подтверждения, используя подписанные URL-адреса в Laravel. Кажется, все работает нормально, но ссылка получается неправильной, если она построена с использованием фасада URL.
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!');
}
В письме ссылка выглядит так:
http://localhost/mydomain.com/confirm/14?signature=3ba4d86827717440f70a3b2f60c913b6e84d550cb9fce8de04a8ba359833ac7c
Часть "localhost" не должна быть там. Однако, если я вручную удаляю его в строке URL-адреса, я считаю, что подписанный URL-адрес - это то, чем я манипулировал, и выдает ошибку 401. Я работаю в среде локального хоста, но я использую автоматический виртуальный хост Laragon, чтобы я мог запустить его с доменом.
Какие-либо предложения?
1 ответ
Иногда, если вы работаете в виртуальных средах или докер-контейнере, просто установите APP_URL
не сработает. Попробуйте выполнить следующие действия.
Шаг 1. Установите свой домен в .env
файл. (Не забывайте двойные кавычки)
APP_URL="http://yourdomain.com"
Шаг 2: Добавьте следующую строку перед созданием подписанного маршрута
URL::forceRootUrl(\config('app.url'));
Шаг 3: (Необязательно) Добавьте следующую строку, если вы хотите принудительно https
схема
URL::forceScheme('https');
Изменить:
APP_URL = example.com
Для того, чтобы:
APP_URL = http://example.com/
Я предполагаю, что отсутствие указания "http://" заставляет его добавлять localhost вперед. Надеюсь, это поможет кому-то!