web-dev-qa-db-ja.com

RewriteCond%{HTTPS}!= onは、RewriteCond%{SERVER_PORT}!^ 443 $が機能していても機能しません

Htaccessで非HTTPS URLを確認する必要があります。

私の理解では、RewriteCond %{HTTPS} !=onはHTTPSではないすべてのURLと一致します。しかし、テストの結果、RewriteCond %{HTTPS} !=on一致HTTPHTTPSの両方のURLが見つかりました。

ただし、RewriteCond %{SERVER_PORT} !^443$はHTTPS以外のURLと正しく一致していますか? %{HTTPS}!= onの理解に関する何かが欠けていますか?

1
Kannan

私の理解では、RewriteCond %{HTTPS} !=onはHTTPSではないすべてのURLと一致します。

はい、それは正しいです。このコンテキストでは、HTTPSサーバー変数であり、サーバーにヒットするリクエストに基づいてApacheによって設定されます。

しかし、テストの結果、RewriteCond %{HTTPS} !=on一致HTTPHTTPSの両方のURLが見つかりました。

SSL証明書がアプリケーションサーバーに直接インストールされている場合、これは不可能です。ただし、SSLプロキシを使用し、SSLがフロントエンドプロキシによって処理され、SSLプロキシからアプリケーションサーバーへの接続が単純なHTTPである場合(Cloudflareの無料のフレキシブルSSLオプションの場合)サーバーはHTTP経由でのみトラフィックを処理しているため、実際にはが表示されます

ただし、RewriteCond %{SERVER_PORT} !^443$はHTTPS以外のURLと正しく一致していますか?

ただし、これは上記と矛盾します!これが機能する場合、HTTPSに対するチェックも同様です。これは、おそらく上記のキャッシュされた応答を見ていることを示唆しているように思われますか?

1
MrWhite