2008-12-10 16:50:11
WEBサイトリニューアルに伴うメンテナンス画面の設定
テーマ:WEBサイト制作
WEBサイトのリニューアルの際、一定時間サイトクローズを
行うということはよくあります。
そんな時にベストな方法としては、
メンテナンス中ステータスコード503を返す
です。
こういう時に色々な状況が考えられますが、
少し厄介な状況として、
ということが考えられます。
こうなってくると、度々ご紹介しているmod_rewriteの出番です。
まず、上記の要望を満たすために、どのような処理を入れるかを考えます。
さて、具体的に処理を書いてみましょう
1行目はおなじみの、オマジナイです。
2行目ですが、ここでIPアドレス(127.0.0.1)を指定します。
アクセスした来たユーザーのIPが127.0.0.1の場合は、
RewriteRuleを適用しませんという意味です。
3行目はURLがhttp://xxx.xxx.xxx/503.phpの時は、
下のRewriteRuleを適用しないという意味です。
無限ループを回避しています。
4行目もオマジナイだと思ってください。
5行目ですが、全てのURLへのアクセス(*)を、
リライトさせるという意味になります。
これで、サイトへの全てのアクセスが503ページになりますが、
このままではヘッダが503にならず、クローラーには
リニューアル中だということを認識されません。
そこで、この例で503ページをPHPファイルにしている意味が出てきます。
このPHPファイルの先頭(処理が通るところならどこでも良いです)で、
以下のスクリプトを書いてください。
header ("HTTP/1.0 503 Service Temporarily Unavailable");
これでOKです。
あとは、503.phpにhtmlを直接書くなり、他のhtmlファイルを
includeするなりで、目的の条件もクリアできます。
ただ、これは私の記事ではいつものことですが、
Apache+PHPの環境でなければ実現できないことに注意してください。
(坪 昌史)
行うということはよくあります。
そんな時にベストな方法としては、
メンテナンス中ステータスコード503を返す
です。
こういう時に色々な状況が考えられますが、
少し厄介な状況として、
・既存コンテンツは消さずにリニューアルしたい(リスクヘッジ)
・自分からはちゃんとコンテンツを見れるようにしたい
・オリジナルのメンテナンス画面を用意したい
ということが考えられます。
こうなってくると、度々ご紹介しているmod_rewriteの出番です。
まず、上記の要望を満たすために、どのような処理を入れるかを考えます。
1.サイト内の全てのURLへのアクセスを、リダイレクトさせる
2.特定IPアドレスからのアクセスはリダイレクトさせない
3.自分で作成したメンテナンス画面を作成して、リダイレクト先に指定
4.リダイレクト先のphpで、503ヘッダを出力させる
さて、具体的に処理を書いてみましょう
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1$
RewriteCond %{REQUEST_URI} !^/503.php$
RewriteBase /
RewriteRule ^.*$ /503.php [L]
1行目はおなじみの、オマジナイです。
2行目ですが、ここでIPアドレス(127.0.0.1)を指定します。
アクセスした来たユーザーのIPが127.0.0.1の場合は、
RewriteRuleを適用しませんという意味です。
3行目はURLがhttp://xxx.xxx.xxx/503.phpの時は、
下のRewriteRuleを適用しないという意味です。
無限ループを回避しています。
4行目もオマジナイだと思ってください。
5行目ですが、全てのURLへのアクセス(*)を、
リライトさせるという意味になります。
これで、サイトへの全てのアクセスが503ページになりますが、
このままではヘッダが503にならず、クローラーには
リニューアル中だということを認識されません。
そこで、この例で503ページをPHPファイルにしている意味が出てきます。
このPHPファイルの先頭(処理が通るところならどこでも良いです)で、
以下のスクリプトを書いてください。
header ("HTTP/1.0 503 Service Temporarily Unavailable");
これでOKです。
あとは、503.phpにhtmlを直接書くなり、他のhtmlファイルを
includeするなりで、目的の条件もクリアできます。
ただ、これは私の記事ではいつものことですが、
Apache+PHPの環境でなければ実現できないことに注意してください。
(坪 昌史)










