この質問はAWSフォーラムで質問されており、答えは、裸のIPアドレスのトラフィックを処理し、リダイレクトを行わないデフォルトの仮想ホストを設定することでした。これは、IPアドレスにヒットした通常のユーザーもリダイレクトされないことを意味します。
または、ELBに要求するURLのパス部分を指定し、別のRewriteCondを追加してそのパスを無視することもできます。
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/health-check$
RewriteRule ^ http://www.example.com/$1 [R=301,L]
そのURLにアクセスした通常のユーザーはリダイレクトされません。
同じ手法を使用して、ELBのユーザーエージェントを検出することもできます。
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule ^ http://www.example.com/$1 [R=301,L]
User-Agentを偽装する通常のユーザーはリダイレクトされません。
または、ELBの内部IPアドレス。
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^10\.
RewriteRule ^ http://www.example.com/$1 [R=301,L]
このオプションが機能するためには、mod_rpaf
(Apache 2.2の場合)またはmod_remoteip
(Apache 2.4の場合)ヘッダーのREMOTE_ADDR
内容の正しい部分を含むように変数を変更する必要がありますX-Forwarded-For
。これを正しく設定する限り、通常のユーザーがリダイレクト応答を回避することはできません。