さくらインターネットのサーバーメンテナンスにより、本番サイトへのアクセスを、別サーバーに用意したメンテナンスページへ一時的に転送させることがあったので、リダイレクト処理を行うために使ったhtaccessのコードを紹介する。
コード全文
ErrorDocument 503 /maintenance/
ErrorDocument 404 /maintenance/
<IfModule mod_rewrite.c>
RewriteEngine On
# 下層全ページリダイレクト
RewriteCond %{REQUEST_URI} !=/maintenance/
RewriteRule ^.*$ - [R=503,L]
# トップページへのアクセスをリダイレクト
RewriteRule ^$ /maintenance/ [R=302,L]
</IfModule>
まず、サーバーが変わると存在しないページやプログラムが出てくるため、503や404のエラーが大量に発生する。
これらのエラーに対しメンテナンスページへのリダイレクトをかける。
ErrorDocument 503 /maintenance/
ErrorDocument 404 /maintenance/
次に、エラーが発生しなかった場合(正常アクセス)のアクセスに対し、リダイレクトをかける。
<IfModule mod_rewrite.c>
RewriteEngine On
# 下層全ページリダイレクト
RewriteCond %{REQUEST_URI} !=/maintenance/
RewriteRule ^.*$ - [R=503,L]
# トップページへのアクセスをリダイレクト
RewriteRule ^$ /maintenance/ [R=302,L]
</IfModule>
とりあえず今回用意したコードは上記のとおりとなる。
htaccessの理解に関しては、かなり曖昧なところがあるので突っ込みどころ満載だろうが、今回はとりあえずこれで何とかなった。