![Что именно содержит переменная SERVER_PROTOCOL (Apache 2.4)?](https://rvso.com/image/697388/%D0%A7%D1%82%D0%BE%20%D0%B8%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%20%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D1%82%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20SERVER_PROTOCOL%20(Apache%202.4)%3F.png)
У меня есть веб-сайт, обслуживаемый Apache 2.4, который должен обслуживать весь контент через HTTPS. У меня уже есть соответствующие перенаправления, которые работают правильно, но не улавливают никаких патологических случаев. Я хотел улучшить эту ситуацию и, выполняя домашнее задание, наткнулся на следующий пример вэтот документ:
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
Redirect "/admin/" "https://www.example.com/admin/"
</If>
Я немного изменил это, чтобы отразить свою ситуацию:
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
Redirect "/" "https://www.example.com/"
</If>
Теперь при попытке просмотреть любой URL-адрес с моего сайта браузер попадает в бесконечный цикл перенаправления.
Я подозреваю, что пример на самом деле неверен. SERVER_PROTOCOL
не содержит значения ни HTTPS
при каких обстоятельствах. Вместо этого, согласно тому, что я читал в других статьях, он содержит такие вещи, как HTTP/1.1
(как и предполагает название).
Итак, мой вопрос: Что именно содержит SERVER_PROTOCOL
при каких обстоятельствах / в каком контексте? И что может быть причиной того, что официальный сайт документации Apache - единственный, который я нашел за несколько часов исследований, где HTTPS
в качестве возможного значения указано SERVER_PROTOCOL
?
решение1
Поздравляем, вы нашли ошибку в документации Apache. Рассмотрите возможность сообщить об этом.
Что касается вашей непосредственной проблемы, то, похоже, вы ищете REQUEST_SCHEME
,который будет содержать
Часть схемы URI запроса
например, http
или https
.