Tenho um site servido pelo Apache 2.4 que deve servir todo o conteúdo via HTTPS. Já tenho redirecionamentos apropriados que funcionam corretamente, mas não detectam nenhum caso patológico. Queria melhorar essa situação e, ao fazer o meu trabalho de casa, deparei-me com o seguinte exemplo emesse documento:
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
Redirect "/admin/" "https://www.example.com/admin/"
</If>
Modifiquei um pouco isso para refletir minha situação:
<If "%{SERVER_PROTOCOL} != 'HTTPS'">
Redirect "/" "https://www.example.com/"
</If>
Agora, ao tentar visualizar qualquer URL do meu site, o navegador entra em um loop infinito de redirecionamento.
Estou suspeitando que o exemplo esteja realmente errado. SERVER_PROTOCOL
não parece conter o valor HTTPS
em nenhuma circunstância. Em vez disso, de acordo com o que li em outros artigos, contém coisas como HTTP/1.1
(como o nome indica).
Portanto, minha pergunta é: o que exatamente SERVER_PROTOCOL
contém em que circunstâncias/em que contexto? E qual poderia ser a razão pela qual o site de documentação oficial do Apache é o único que encontrei durante várias horas de pesquisa que lista HTTPS
como um possível valor de SERVER_PROTOCOL
?
Responder1
Parabéns, você encontrou um erro na documentação do Apache. Considere denunciar isso.
Quanto ao seu problema imediato, você parece estar procurando REQUEST_SCHEME
,que conterá
A parte do esquema do URI da solicitação
por exemplo, http
ou https
.