4
ロードバランサーの背後にあるREMOTE_ADDRの.htaccess RewriteCond?
ロードバランサーの背後にWebサーバーがあります。 メンテナンスのためにサイトをオフラインにするたびにメンテナンスページを表示するには、.htaccessに条件付きリダイレクトを追加する必要があります。この部分は簡単です: RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.php [R=302,L] ただし、訪問者のIPアドレスが自分のものである場合は、メンテナンスページにリダイレクトされず、オンラインであるかのようにサイトを表示およびテストできるという条件を追加します。この部分も通常は簡単です。 RewriteEngine on RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111 RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.php [R=302,L] ただし、私のWebサーバーはロードバランサーの背後にあるため、REMOTE_ADDRロードバランスサーバーの内部IPアドレスに解決されます。 これを変更して、転送されたIPアドレスを探すにはどうすればよいですか?私はPHPで$_SERVER['HTTP_X_FORWARDED_FOR']転送されたIPアドレスを取得するために使用できることを知っています。私はいくつかのことを試しました.htaccessが、うまくいきませんでした: %{X_FORWARDED_FOR} %{HTTP:X_FORWARDED_FOR} %{HTTP_X_FORWARDED_FOR} 解決 私は以下を機能させました: %{HTTP:X-FORWARDED-FOR}