Я искал свою проблему многими способами, но, кажется, не нашел правильного случая, поэтому я спрашиваю здесь.
У меня есть приложение 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-адреса в соответствии с текущим хостом? Мне не нужны никакие другие изменения для двух доменов. Они должны грузить все точно так же, только хост должен оставаться, а не перенаправлять на другой домен.
2 ответа
Перейдите в файл .env и настройте APP_URL=https://mysite-secure.example.com/ и измените href={{asset('folder-path')}} в файле макета или блейдов
Что ж, оказалось, что это не вина Laravel. Снова.
Я напечатал содержимое переменной $_SERVER
в обоих доменах, и, как и ожидалось, хостом в обоих доменах был HTTP-домен. Думаю, мне следовало сказать ранее, что мы используем CloudFront в домене HTTPS. Проблема была именно там.
Выяснилось, что заголовок Host
нужно было добавить в поведение распределения CF, чтобы он не заменялся значением источника (источником является домен http). После того, как это было исправлено, все URL-адреса автоматически отображались правильно.
Похожие вопросы
Новые вопросы
laravel
Laravel - это бесплатная веб-инфраструктура PHP с открытым исходным кодом, созданная Тейлором Отвеллом и предназначенная для разработки веб-приложений по архитектурному шаблону модель-представление-контроллер (MVC) на основе Symfony. Исходный код Laravel размещен на GitHub и лицензирован в соответствии с условиями лицензии MIT.
href="//assets/link-to-some_js.js"
двойная косая черта использует текущий протокол.