Задать вопрос
@popov654
Специалист в области веб-технологий

Как исправить проблему запрета загрузки смешанного содержимого в Chrome?

У меня есть свой домашний сервер, на котором я размещаю небольшие проекты. В некоторых проектах нужна умная обработка URL, например, для того, чтобы в URL можно было указывать язык веб-страницы в документации.

В качестве сервера стоит Apache, перед ним установлен nginx. Apache слушает порт 80, nginx - 443. Перед ними обоими подключен CloudFlare с бесплатным тарифом.

Проблема в том, что когда я пишу правило в .htaccess с использованием mod_rewrite, в правиле я указываю относительные пути, но Apache в заголовке Location возвращает абсолютный путь, начинающийся с "http://". В итоге у меня не грузятся CSS и JS ресурсы, а также шрифты.

Я пытался решить проблему, дописав ряд условий в корневой .htaccess (например, редиректить на HTTPS протокол, если запрос пришёл не через nginx, а напрямую, при этом Referer начинается с "https://"), но всё это бесполезно, потому что чёртов хром даже не отправляет запрос - обрабатывать нечего.

А как крупные проекты решают эту проблему? Её вообще возможно решить, не закрывая полностью доступ по HTTP (я не хочу закрывать)?
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
У nginx для этого существует директива proxy_redirect, которая как раз это и делает, помимо прочего - заменяет часть урла в Location.
Ответ написан
Комментировать
@popov654 Автор вопроса
Специалист в области веб-технологий
Пока что решил проблему прописав абсолютные адреса в правилах перенаправления в .htaccess для проблемного подкаталога. Но имхо это ужасный костыль, так что буду рад услышать более удачные варианты
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы