2018.11.07
2018.11.08
ホームページ制作関連
「.htaccess」を用いて時間指定でメンテナンス画面に転送する設定方法
Webサイトを運営して行く中で、新サービスの実装などでどうしてもサービスを一時的に停止する必要があります。
そう行った場合にサイト訪問者にはメンテナンス画面を表示し、その裏で実装作業などを行います。
今回は「.htaccess」を用いて、特定IP(制作者のIPなど)を除いてサイト訪問者にはメンテナンス画面を表示する設定する方法を紹介します。またこういったメンテナンスは時間指定で行うことが多いので、開始時間や終了時間の設定方法も紹介します。
「.htaccess」の記述方法
基本の記述方法
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteRule ^.*$ - [R=503,L] </IfModule>
上記のように記述をすると、サイトへのアクセスはすべて「maintenance.html」が表示されます。
特定のIPアドレスは通常表示をする
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=000.000.000.000 RewriteRule ^.*$ - [R=503,L] </IfModule>
上記のように追記することで、設定したIPアドレスはメンテナンス画面には転送されずに、通常表示がされます。
上記はIPアドレスが「000.000.000.000」だった時の記述例です。
転送の開始時間
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} ">=201801011200" RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=000.000.000.000 RewriteRule ^.*$ - [R=503,L] </IfModule>
上記は2018年1月1日12:00になるとメンテナンスが開始します。
転送の終了時間
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} ">=201801011200" #RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} "<=201801021500" RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=000.000.000.000 RewriteRule ^.*$ - [R=503,L] </IfModule>
上記は2018年1月2日15:00になるとメンテナンスが終了します。
今回紹介した組み合わせで時間指定で、特定IPを除いたアクセスをメンテナンス表示できます。
「.htaccess」の記述方法は利用するサーバーによっても異なります。必ずしも今回紹介した方法で設定できるとは限りませんが、参考にしてみてください。