PHP — делаем проверку наличия HTTPS или редирект

Веб разработка » PHP


Задача: Не всегда получается настроить .htaccess для принудительного редиректа на протокол HTTPS и как-то необходимо выкручиваться!

Если мы знаем, где находится код, отвечающий за роутинг нашего сайта (запросы в базу данных и вывод контента), мы можем до загрузки страницы инициировать проверку наличия HTTPS в адресной строке и перенаправить на него, в случае отсутствия.

Обычно за роутинг отвечает корневой index.php. В нем может располагаться конструкция SWITCH–CASE или же вызов метода класса, который содержит в себе такую конструкцию. Также это может быть и абсолютно иной подход!

Для инициации проверки наличия HTTPS в адресной строке воспользуемся суперглобальным массивом $_SERVER

if(empty($_SERVER['HTTPS'])){
    $host = $_SERVER['HTTP_HOST'];
    $request_uri = $_SERVER['REQUEST_URI'];
    Header("Location: https://$host$request_uri ");
}

Логика очень проста: если отсутствует HTTPS, делать редирект на него и добавлять запрашиваемый URL (внутренняя страница или реф. ссылка сохраняется). А в ELSE мы перемещаем наши SWITCH–CASE.