Webアプリフレームワークの「簡単メンテナンスモード」コンテストにエントリーされる方はいらっしゃいませんか。http://d.hatena.ne.jp/tanakahisateru/20110527/1306495794 (いろんなフレームワークの性格が見えて面白いと思う)
http://twitter.com/tanakahisateru/status/74078560624721920

ということで、CakePHPの場合です。

CakePHPの場合、routes.phpで単純に、

Router::connect('/*', array('controller' => 'pages', 'action' => 'display', 'maintenance'));

とやっても、うまくいきません。

じゃあどうするのかというと。

Maintenance plugin for CakePHP

というプラグインを使うと簡単に実装できます。(公開してくださっているFusicさんに感謝!

まず、プラグインをインストール。git をつかっているなら

git submodule add -f https://github.com/fusic/maintenance.git app/plugins/maintenance

次に、app_controller.phpの$componentsを書き換えてMaintenanceコンポーネントを有効にします。

このとき、メンテナンス用画面のURLを’maintenanceUrl’で指定するのを忘れずに。 (今回は /pages/maintenance を指定しました。

メンテナンス画面もapp/views/pages/maintenance.ctpとして作っちゃいます。

メンテナンスモードにするには、app/config/bootstrap.phpに

としてフラグを立てればOKです。

で、このプラグインのすごいところは、IPによるメンテナンスON/OFFや、メンテナンスモードでも見せる部分を指定できたり、時限設定ができたりするところ。

詳しくは、プラグインのREADMEを読んでみてください。

(中の人がもっと詳細な記事書いてくれないかなー。

参考リンク: CodeIgniterで簡単メンテナンスモード - localdisk Pinocoで簡単メンテナンスモード - なんたらノート 第二期 Silex で簡単メンテナンスモード - ぷぎがぽぎ symfony 1.4 で簡単メンテナンスモード - ぷぎがぽぎ