先日紹介したBIG-IPでのsorry対応でちょっとしたチョンボが。
https://piteki.com へアクセスするときれいにメンテが表示されるが、
https://piteki.com/hoge へアクセスすると404。。。そりゃそうだ。
単純にメンテナンス用ページにリダイレクトは簡単だけど、URLの表示を変えずにリダイレクトしたかったので、いろいろ調べて下記のとおりとした。
リライト設定
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^(10.0.0.1|10.0.0.2)$
RewriteCond %{REQUEST_URI} !(^/jogai-dir/)
RewriteCond %{REQUEST_URI} !\.css$
RewriteCond %{REQUEST_URI} !\.js$
RewriteCond %{REQUEST_URI} !\.png$
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/mainte.html [P,L]
補足
リライトの有効化
特定のIPのリライト除外
特定のディレクトリのリライト除外
cssファイルのリライト除外
jsファイルのリライト除外
pngファイルのリライト除外
メンテページへリダイレクト
※メンテページのhtmlにcssやjs、画像ファイルの読み込みがあったので除外が必要だった。
※リダイレクトの第三引数オプションの「P」が重要。
オプション参考させていただいた方のページ
https://tm.root-n.com/server:apache:module:rewrite
※注意
AWSなど、LBにVirtualServerを持たせてる場合などはリダイレクトループが発生するので、リダイレクト先を除外などする必要がある
コメント