Принудительный http / https: Как определить https и какой заголовок статуса отправлять при перенаправлении? - PullRequest
1 голос
/ 18 января 2012

Я написал скрипт для принудительного доступа к определенным разделам сайта через http или https.Мы хотим, чтобы пользователь перенаправлялся на обычную страницу http, если он случайно попадет на версию https, и наоборот.Пока все хорошо, но у меня есть 2 вопроса для вас, ребята.

  1. Какой заголовок статуса нужно отправить при переключении протокола?В настоящее время я использую это в обоих случаях перед перенаправлением:

    header('HTTP/1.1 301 Moved Permanently');
    
  2. Какой предпочтительный способ обнаружения, если мы используем https?

    // if ($_SERVER['SERVER_PORT'] == 443) /* EDIT: OK, not this? */
    
    if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on'))
    

    Что-то другое?Оба?

Ответы на комментарии:

  • Мы используем Apache, но если есть универсальное решение, которое было бы замечательно.

  • Мы не хотим использовать .htaccess, потому что необходимые страницы https помечены как таковые CMS, которую мы используем, и это является частью.Мы не хотим «жестко» кодировать URL-адреса в файл.

1 Ответ

2 голосов
/ 18 января 2012
  1. Перенаправление 301 является правильным методом. Вы не можете переключаться между промежуточным потоком HTTP и HTTPS. Страница должна быть перезагружена в клиенте.
  2. Второй метод, через $_SERVER['HTTPS'], является предпочтительным. Просто убедитесь, что ваш веб-сервер поддерживает его.
...