web-dev-qa-db-ja.com

Apacheは条件付きでカスタムhttpヘッダーから書き換えを実行できますか?

(単純なAmazon)ロードバランサーの背後にApacheサーバーがあります。 443以外の受信トラフィックを443にリダイレクトしたいのですが、Apache仮想ホストを1つだけ使用することをお勧めします。したがって、HTTP_X_FORWARDED_PORTヘッダーが443でない場合、それを検出しようとしています。

私は RewriteCond docs を確認しましたが、これは限られたHTTPヘッダーのセットでのみ機能します。

基本的に私がやっていることはこれです:

<VirtualHost *:80>
        ServerName www.example.com

        RewriteEngine On
        RewriteCond %{HTTP_X_FORWARDED_PORT} !=443
        RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

        ....
</VirtualHost>

ただし、RewriteCondはHTTP_X_FORWARDED_PORTを認識しません。

これを達成する他の方法はありますか(1つのVirtualHostで)? (何らかのタイプの受信ヘッダーチェック?)

おかげで、ランス

12
Lance Rushing

RewriteCondドキュメントの少し下:

%{HTTP:header}、ここでヘッダーは任意のHTTP MIMEヘッダー名にすることができます

そのため、事前抽出されたヘッダーとまったく同じ形式ではなく、それを行うことができます。

これを試して:

RewriteCond %{HTTP:X-Forwarded-Port} !=443
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
13
Shane Madden