Назад | Перейти на главную страницу

Что именно содержит переменная SERVER_PROTOCOL (Apache 2.4)?

У меня есть веб-сайт, обслуживаемый 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.