Задача: Не всегда получается настроить .htaccess для принудительного редиректа на протокол HTTPS и как-то необходимо выкручиваться!
Если мы знаем, где находится код, отвечающий за роутинг нашего сайта (запросы в базу данных и вывод контента), мы можем до загрузки страницы инициировать проверку наличия
HTTPS в адресной строке и перенаправить на него, в случае отсутствия.
Обычно за роутинг отвечает корневой
index.php. В нем может располагаться конструкция
SWITCH–CASE или же вызов метода класса, который содержит в себе такую конструкцию. Также это может быть и абсолютно иной подход!
Для инициации проверки наличия
HTTPS в адресной строке воспользуемся суперглобальным массивом
$_SERVERif(empty($_SERVER['HTTPS'])){
$host = $_SERVER['HTTP_HOST'];
$request_uri = $_SERVER['REQUEST_URI'];
Header("Location: https://$host$request_uri ");
}
Логика очень проста: если отсутствует
HTTPS, делать редирект на него и добавлять запрашиваемый URL (внутренняя страница или реф. ссылка сохраняется). А в
ELSE мы перемещаем наши
SWITCH–CASE.