変数 SERVER_PROTOCOL には実際には何が含まれていますか (Apache 2.4)?

変数 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(名前から予想されるとおり)。

そこで私の質問は、どのような状況/コンテキストで、正確には contain が何を意味するのかということです。また、数時間にわたる調査での可能な値としてSERVER_PROTOCOLリストされているのが Apache の公式ドキュメント Web サイトだけである理由は何なのでしょうか。HTTPSSERVER_PROTOCOL

答え1

おめでとうございます。Apache ドキュメントにエラーが見つかりました。報告することを検討してください。

あなたの当面の問題に関しては、あなたが探しているのはREQUEST_SCHEME含まれるもの

リクエストのURIのスキーム部分

たとえば、httpまたはhttps

関連情報