こちらの記事の続きです。
サイトメンテナンス中に出すべきHTTPステータスコードについて
指定ipアドレス以外からのアクセスを拒否する(ロリポップサーバーの場合)
でアクセス制限をした場合「403エラー」が表示されました。
403エラーとは「アクセス禁止」を示すコードです。
アクセス禁止であることは間違い無いのですが、「なぜアクセスできないか」までは表現できていません。
今回は「サイトメンテナンス」、つまり「サービス利用不可」である「503エラー」を示すのが一番良いということになります。
ロリポップサーバーで503エラーを表すには
ロリポップサーバーは初心者に優しい設計となっています。
そのため代表的なエラーコードに対しては、「ユーザー専用ページ」で設定をするだけで「独自に準備したエラー画面」を表示できます。
エラーページ変更 / サーバー・プログラム / マニュアル - レンタルサーバーならロリポップ!
ただ、見てみると今回使用したい「503エラー」はなさそうです。
そこで.htaccessを記述し、アップロードすることで「503エラー」表示をすることにします。
サイトメンテナンス中を示す.htaccessの書き方
ErrorDocument 503 /err/503.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/err/503.html
RewriteCond %{REMOTE_ADDR} !=管理者ipアドレス
RewriteRule ^.*$ - [R=503,L]
</IfModule>
一行目 503エラーだったら errフォルダの503.html を表示してくださいの意味です。
三行目以降は「mod_rewrite モジュール」と呼ばれるものでURLを書き換えています。
- エラー用に用意したページではなく
- 管理者でも無い場合
503エラーですよとコンピュータ側に教えつつ、人間に対しては503.htmlを表示する、というような記述です。
リダイレクトループに注意
ErrorDocument 503 /err/503.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/err/503.html
RewriteCond %{REMOTE_ADDR} !=管理者ipアドレス
RewriteRule ^.*$ - [R=503,L]
</IfModule>
上記5行目
の部分を記述しないとリダイレクトループ、いわゆる無限ループになります。
そうするとサーバー高負荷としてエラーになってしまうので注意です。
Webサイトのメンテナンス中画面を出す正しい作法と.htaccessの書き方