Как исправить проблему запрета загрузки смешанного содержимого в Chrome?
У меня есть свой домашний сервер, на котором я размещаю небольшие проекты. В некоторых проектах нужна умная обработка URL, например, для того, чтобы в URL можно было указывать язык веб-страницы в документации.
В качестве сервера стоит Apache, перед ним установлен nginx. Apache слушает порт 80, nginx - 443. Перед ними обоими подключен CloudFlare с бесплатным тарифом.
Проблема в том, что когда я пишу правило в .htaccess с использованием mod_rewrite, в правиле я указываю относительные пути, но Apache в заголовке Location возвращает абсолютный путь, начинающийся с "http://". В итоге у меня не грузятся CSS и JS ресурсы, а также шрифты.
Я пытался решить проблему, дописав ряд условий в корневой .htaccess (например, редиректить на HTTPS протокол, если запрос пришёл не через nginx, а напрямую, при этом Referer начинается с "https://"), но всё это бесполезно, потому что чёртов хром даже не отправляет запрос - обрабатывать нечего.
А как крупные проекты решают эту проблему? Её вообще возможно решить, не закрывая полностью доступ по HTTP (я не хочу закрывать)?
Пока что решил проблему прописав абсолютные адреса в правилах перенаправления в .htaccess для проблемного подкаталога. Но имхо это ужасный костыль, так что буду рад услышать более удачные варианты
dodo512, попробовал, к сожалению, не сработало. Но в этом исключительно моя вина: у меня CloudFlare настроен так, что он ходит только по HTTP, в этом вся проблема. Единственным рабочим способом оказалась подстановка HTTPS ссылок в Location на стороне Apache.
Я понимаю, что гораздо безопаснее режим Strict, когда CloudFlare получает данные по HTTPS, но у меня очень слабый комп стоит в качестве сервера стоит, и в этом режиме через очень короткое время начинается жуткий лагодром: очень долго открываются страницы, грузятся картинки и т.д. (3-4 секунды и более вместо 80-150 мс время загрузки фоновой фотографии в JPEG на главной странице сайта). Так что увы, пока только так.