У меня есть веб-сайт, обслуживаемый 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
?
Поздравляем, вы обнаружили ошибку в документации Apache. Рассмотрите возможность сообщения об этом.
Что касается вашей непосредственной проблемы, вы, кажется, ищете REQUEST_SCHEME
, который будет содержать
Часть схемы URI запроса
например, http
или https
.