#010
posted on 2020.12.30

サイトメンテナンス用にIPアドレスで振り分けてリダイレクト。

Apacheのモジュール「mod_rewrite」を.htaccessに記述して、アクセス元のIPアドレスによって条件分岐し、HTTPステータスコード503でリダイレクトさせる。

ステータスが503の場合の表示用のファイル (今回は「maintenance.php」) を用意して指定したディレクトリに設置する。

※ .htaccessのパーミッションは604にする。 (644を推奨しているレンタルサーバーもある。)

503 (Service Unavailable)は、サーバーのメンテナンスや、アクセス超過によるサーバー負荷対策のため、一時的にアクセス制限していることを表すステータスコード。

 

ErrorDocument 503 /maintenance.php

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/maintenance\.php$
RewriteCond %{REMOTE_ADDR} !^XXX.XXX.XXX.XXX$
RewriteRule ^(.*)$ - [R=503,L]
<IfModule>

リクエストされたURLが「/maintenance.php」でない場合で、リモートのIPアドレスが「XXX.XXX.XXX.XXX」でない場合に、ステータスコード503でトップディレクトリにリダイレクト。

 

ErrorDocument

第1引数にエラーのステータスコード、第2引数に該当コードのエラー発生時に表示するファイルのパスを指定。

 

<IfModule mod_rewrite.c>

モジュールのmod_rewriteが有効かどうかを確認するif文。

 

RewriteCond

RewriteCondは、URL書き換えを行う場合の条件を定義する条件分岐の構文。

マッチした場合だけ、直後のRewriteRuleが処理される。

 

RewriteRule

RewriteRuleは、URL書き換えを実行する構文。

第1引数にマッチした場合に第2引数を実行。

– : 何もしない(URLを書き換えない)。全てのアクセスをトップページに移動させる場合は「-」を「/」にする。

 

 

mod_rewriteの詳細は前の記事参照。

 

 

この記事をシェア