Я написал сценарий для принудительного доступа к определенным разделам сайта через http или https. Мы хотим, чтобы пользователь перенаправлялся на обычную страницу http, если они случайно попали в версию https, и наоборот. Пока, так хорошо, но у меня есть 2 вопроса для вас, ребята.Принуждение http/https: как определить https и какой заголовок статуса отправлять при перенаправлении?
Каков правильный заголовок состояния для отправки при переключении протокола? В настоящее время я использую это в обоих случаях перед перенаправлением:
header('HTTP/1.1 301 Moved Permanently');
Что является предпочтительным способом обнаружить, если мы используем протокол HTTPS?
// if ($_SERVER['SERVER_PORT'] == 443) /* EDIT: OK, not this? */ if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on'))
Что-то еще? И то и другое?
Ответы на комментарии:
Мы используем Apache, но если есть универсальное решение, которое было бы здорово.
Мы не хотим использовать
.htaccess
, потому что требуемые страницы https «помечены» как таковые используемой нами CMS и что это часть. Мы не хотим «жестко закодировать» URL-адреса в файле.
IIRC, '$ _SERVER ['HTTPS']' присутствует только на некоторых серверах (а именно Apache). – ceejayoz
Проверка порта ненадежна. Можно запускать SSL на другом, отличном от 443, а также можно подключиться к порту 443 * без * с помощью HTTPS (хотя сервер обычно будет убивать запрос с ошибкой). – animuson
Почему я не чувствую запах htaccess здесь? –