WordPress のアップグレードをするために、ちょうどブックマークしておいた メンテナンス中画面を出す正しい作法と.htaccessの書き方 | Web担当者Forum を参考にしてメンテナンス画面を出そうとしたらメンテナンス画面が出なかった。
ちなみに、参考にした .htaccess の書き方は下記。両バージョンとも HTTPレスポンスコード 500 を返してメンテナンス画面ではなく、英語のメッセージが出ていた。
最低限バージョン
ErrorDocument 503 /maintenance.html <ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteRule ^.*$ - [R=503,L] </ifmodule>
しっかりバージョン
ErrorDocument 503 /maintenance.html <ifmodule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=192.168.0.4 RewriteCond %{REMOTE_ADDR} !=192.168.0.5 RewriteRule ^.*$ - [R=503,L] </ifmodule> <ifmodule mod_headers.c> Header set Retry-After "Sun, 14 Jun 2009 6:00:00 GMT </ifmodule>
調べてみると、Apache のバージョンによる問題のように思える。
Apache 1.3 系を使っているが、redirect|R のレスポンスコードは 300 から 400 までしか使えないようだ。
‘redirect|R [=code]’ (強制 redirect)
Substitution の前に (新しい URL を URI にする) http://thishost[:thisport]/ をつけることにより強制的な外部リダイレクションを行ないます。 code が指定されない場合、HTTP レスポンスの 302 (MOVED TEMPORARILY) が使われます。300 から 400 までの他のレスポンスコードを返したい場合は、 直接その番号を指定するか、シンボル名 temp (デフォルト), permanent, seeother のいずれかを使います。例えば、“/~” を “/u/” に変換したり、常に /u/ user にスラッシュを追加するなどの、クライアントに 正規化 された URL を返すルールに使うことができます。
もとの文章をよく読むと Apache 2.2系 の話と最後に書かれていた。自分が何か書く場合は、使える条件などがある場合は最初に書いておくように心掛けておこうと思った。
上記のレスポンスコードのことを調べていたら、対処方法が書かれていたのでこちらを参考にしてたらメンテナンス画面が表示された。
ウノウラボ Unoh Labs: メンテナンス画面を簡単に出してみる
PHPを使えるという条件が付きだが、これだったら Apache のバージョンに影響されなそう。
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^503/ - [L] RewriteCond %{REMOTE_ADDR} !=XXX.XXX.XXX.XXX RewriteRule ^.*$ 503/index.php </IfModule>
※REMOTE_ADDR の 『XXX.XXX.XXX.XXX』 部分は 管理者の IP を入れておけば、管理者は作業することが出来る。()
※気分的にディレクトリ配下に index.php がないのは好きではないので、503.php は index.php にした。
※index.php の内容は 503.php と同じ。
<?php header ('HTTP/1.0 503 Service Temporarily Unavailable'); include(dirname(__FILE__) . '/maintenance.html');
WordPress のアップグレードで使ったので、本来はもうすこし記述が必要だったが長くなったので別途記述する。
トラックバック一覧
この記事にはトラックバックがついていません。