Apache Rewrite URLを変えずに表示

linux

先日紹介した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を持たせてる場合などはリダイレクトループが発生するので、リダイレクト先を除外などする必要がある

コメント