先日、仕事の関係上でウェブサイトをメンテナンスする機会があったので忘れないように個人的にメモ。
そもそも、実際にボクが「現在サイトメンテナンス中です」を目にしたことあるのは、ほんの数回程度。数少ない過去の経験を参考に考えてみたところ、
(1) メンテナンス期間はサイト管理者(自分)以外はアクセス禁止
(2) エラーページにて「現在サイトメンテナンス中です」と表示
の2つを実現できれば大丈夫という結論に。
で、これを実現するために、mod_rewriteとか色々考えたけど、最終的には.htaccessだけでいけた。
まず、Webルート階層にサイト管理者以外をアクセスできないように.htaccessを設置。
アクセス制限後、サイトのページにアクセスするとどのページでも403エラーが表示されコンテンツは表示されなくなる。
しかし、ここではサイトアクセス時にカスタムのエラーページを表示させ、「現在メンテナンス中です」と告知したいので、次にその方法をメモっときます。
そもそも、上記ソースだけで「403エラーのときは、/error/error403.htmlを表示しなさい」ということを命令しているので、このerror403.htmlをカスタマイズすればOKっぽいです。ですが、サイト全体にアクセス制限が加わっているため、そのエラーページへのアクセスも禁止されちゃう。そこで、このerrorディレクトリだけ.htaccessを設置してアクセス制限を解除すればOK。
こんなふうにして、Webルートの.htaccessとエラーディレクトリの.htaccessの2ファイルだけで意図したアクセス制限ができ、最終的にメンテナンスを実行することができた。時間に追われていたので、個人的にはホっとした・・・。
ちなみに.htaccessとか詳しい説明はおなじみの次のサイトを参考に。
ミケネコの htaccess リファレンス
.htaccess実践活用術
あ、そうそう。メンテナンスするマシンだけ許可するIPだけど、PHPで print_r($_SERVER) とかやればすぐにわかるんで。
以上、個人メモのため詳細すぎず、申し訳。
そもそも、実際にボクが「現在サイトメンテナンス中です」を目にしたことあるのは、ほんの数回程度。数少ない過去の経験を参考に考えてみたところ、
(1) メンテナンス期間はサイト管理者(自分)以外はアクセス禁止
(2) エラーページにて「現在サイトメンテナンス中です」と表示
の2つを実現できれば大丈夫という結論に。
で、これを実現するために、mod_rewriteとか色々考えたけど、最終的には.htaccessだけでいけた。
まず、Webルート階層にサイト管理者以外をアクセスできないように.htaccessを設置。
AddHandler cgi-script htaccess
Options -Indexes
ErrorDocument 401 /error/error401.html
ErrorDocument 403 /error/error403.html
ErrorDocument 404 /error/error404.html
ErrorDocument 500 /error/error500.html
order deny,allow
deny from all
allow from (ここに許可を許すIPを記述)
この参考ソースでは、最終段落がそのアクセス制限を行う箇所ね。すべてのアクセスを禁止し、最後にメンテナンスを行う環境だけのIPだけ許可しています(自身のIPの調べ方などは後述)。これでサイト全体のアクセス制限をかけることが可能。アクセス制限後、サイトのページにアクセスするとどのページでも403エラーが表示されコンテンツは表示されなくなる。
しかし、ここではサイトアクセス時にカスタムのエラーページを表示させ、「現在メンテナンス中です」と告知したいので、次にその方法をメモっときます。
そもそも、上記ソースだけで「403エラーのときは、/error/error403.htmlを表示しなさい」ということを命令しているので、このerror403.htmlをカスタマイズすればOKっぽいです。ですが、サイト全体にアクセス制限が加わっているため、そのエラーページへのアクセスも禁止されちゃう。そこで、このerrorディレクトリだけ.htaccessを設置してアクセス制限を解除すればOK。
allow from all
このように記述することで上位階層で設置したアクセス制限を解除することができる。こんなふうにして、Webルートの.htaccessとエラーディレクトリの.htaccessの2ファイルだけで意図したアクセス制限ができ、最終的にメンテナンスを実行することができた。時間に追われていたので、個人的にはホっとした・・・。
ちなみに.htaccessとか詳しい説明はおなじみの次のサイトを参考に。
ミケネコの htaccess リファレンス
.htaccess実践活用術
あ、そうそう。メンテナンスするマシンだけ許可するIPだけど、PHPで print_r($_SERVER) とかやればすぐにわかるんで。
以上、個人メモのため詳細すぎず、申し訳。

Send Your Comment