Я искал свою проблему многими способами, но, кажется, не нашел правильного случая, поэтому я спрашиваю здесь.

У меня есть приложение Laravel, которое установлено на сервере, и все работает правильно. Домен установлен только как HTTP и настроен из AWS. Однако нам нужен еще один домен, который должен работать только с HTTPS. Домен HTTP указывает на экземпляр сервера, а домен HTTPS указывает на дистрибутив CloudFront, источником которого является домен HTTP. Проблема в том, что когда я открываю домен HTTPS, все ссылки и изображения загружаются из домена HTTP.

Чтобы быть более конкретным, скажем, у меня есть http://mysite-notsecure.example.com и https://mysite-secure.example.com. Когда я открываю http://mysite-notsecure.example.com, все работает как надо и никаких проблем. Однако, когда я открываю https://mysite-secure.example.com, сайт загружается, а также такие файлы, как app.js и app.css, загружаются с правильного хоста, но такие вещи, как шрифты, изображения, ссылки и т. д., загружаются с http://mysite-notsecure.example.com.

Поскольку большинство URL создаются с помощью функции url(), я думаю, что проблема как-то связана с APP_URL, для которой сначала было установлено значение http://mysite-notsecure.example.com, но когда я добавил новый домен, Я установил его пустым (APP_URL=), однако URL-адреса по-прежнему строятся одинаково (я очистил кеш конфигурации). Что мне нужно сделать, чтобы мой сайт формировал URL-адреса в соответствии с текущим хостом? Мне не нужны никакие другие изменения для двух доменов. Они должны грузить все точно так же, только хост должен оставаться, а не перенаправлять на другой домен.

-1
Annity 3 Фев 2022 в 12:55
Измените свои ссылки, чтобы использовать текущий протокол. в формате href="//assets/link-to-some_js.js" двойная косая черта использует текущий протокол.
 – 
N69S
3 Фев 2022 в 13:01

2 ответа

Перейдите в файл .env и настройте APP_URL=https://mysite-secure.example.com/ и измените href={{asset('folder-path')}} в файле макета или блейдов

0
Faran 3 Фев 2022 в 13:29

Что ж, оказалось, что это не вина Laravel. Снова.

Я напечатал содержимое переменной $_SERVER в обоих доменах, и, как и ожидалось, хостом в обоих доменах был HTTP-домен. Думаю, мне следовало сказать ранее, что мы используем CloudFront в домене HTTPS. Проблема была именно там.

Выяснилось, что заголовок Host нужно было добавить в поведение распределения CF, чтобы он не заменялся значением источника (источником является домен http). После того, как это было исправлено, все URL-адреса автоматически отображались правильно.

0
Annity 3 Фев 2022 в 17:39