一日のある時間帯をメンテナンス時間として、どのページにアクセスしても、特定の「メンテナンス中です」と書かれたページを表示させたいのですが、どのような方法が一番スマートでしょうか。
Apacheで制御できれば、それがよさそうな気がしますが。
b-windさんの紹介されているmod_rewriteで、
RewriteEngine on RewriteCond %{TIME_HOUR}%{TIME_MIN} >0100 RewriteCond %{TIME_HOUR}%{TIME_MIN} <0200 RewriteRule ^.*$ /maintenance.html [L]
としてはどうでしょう?
上記は1時から2時までのつもりですが、ひょっとしたら0100ではなく0059とかにするべきかもしれません(未確認です)。
サイト自体にそういう機能を作ってしまうのが確実ですが、
mod_rewrite が使えればわりと簡単にもできます。
RewriteEngine on RewriteRule ^.*$ /maintenance.html [L]
もうひとつの方法としてはメンテナンス時用の DocumentRoot を作り、そこには maintenance.html のみ用意します。
そして
ErrorDocument 404 /maintenance.html
とするとほとんどすべてのページが not found になるので
maintenance.html がエラードキュメントとして表示されることになります。
この場合の欠点としては、ブラウザや設定によっては内蔵の 404 エラーページが優先して表示されることがあることです。
時間の指定をしていないようですが…
一日のある時間帯(例えば5~6時)などをメンテナンス時間としたいのです。
すいません時間指定は出来ません。
メンテナンスの前後に Apache を再起動することが前提です。
Apache のみでは時間指定は不可能なので、cron 等と連携することになります。
b-windさんの紹介されているmod_rewriteで、
RewriteEngine on RewriteCond %{TIME_HOUR}%{TIME_MIN} >0100 RewriteCond %{TIME_HOUR}%{TIME_MIN} <0200 RewriteRule ^.*$ /maintenance.html [L]
としてはどうでしょう?
上記は1時から2時までのつもりですが、ひょっとしたら0100ではなく0059とかにするべきかもしれません(未確認です)。
ばっちりです。
あざっす!
ばっちりです。
あざっす!