#010
posted on 2020.12.30 (Wed) 2021.11.03 (Wed)

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

Apacheのモジュール「mod_rewrite」を.htaccessに記述して、アクセス元のIPアドレスによって条件分岐し、許可しないIPアドレスの場合にはHTTPステータスコード503でメンテナンス中を表示するページにリダイレクトさせる。

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

※ 「mod_rewrite」の詳細は前の記事参照。

 

 

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

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

 

 

.htaccessの記述

リクエストされたURLが「/maintenance.php」ではない場合に、リモートのIPアドレスが「XXX.XXX.XXX.XXX」に一致しなければ、ステータスコード503でリダイレクトする設定の記述。

(「XXX.XXX.XXX.XXX」以外のIPからのアクセスは503でリダイレクトされるので、指定してある「maintenance.php」がリクエストされたファイルとして表示される。)

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>

ErrorDocument : エラー時の処理を指定するディレクティブ。

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

 

<IfModule mod_rewrite.c> : モジュールの「mod_rewrite」が有効かどうかを確認するif文。

RewriteEngine on : 「mod_rewrite」の機能を有効にする。

RewriteCond : 「mod_rewrite」でURL書き換えを行う場合の条件を定義する条件分岐の構文。マッチした場合だけ、直後のRewriteRuleが処理される。

RewriteRule : 「mod_rewrite」でURL書き換えを実行する構文。第1引数にマッチした場合に第2引数を実行。

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

 

 

この記事のURL

https://memo.ag2works.tokyo/post-350/

Copyコピー
この記事のタイトル

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

Copyコピー
この記事のリンクタグ

<a href="https://memo.ag2works.tokyo/post-350/" target="_blank" rel="noopener">サイトメンテナンス用にIPアドレスで振り分けてリダイレクト。 | memo メモ [AG2WORKS]</a>

Copyコピー
※ フィールドをクリックでコピーするテキストの編集ができます。

この記事へのコメント

コメントの書き込みはまだありません。

  • コメント内のタグはエスケープ処理され、文字列として出力されます。
  • セキュリティーのため、投稿者のIPアドレスは取得されます。
  • 管理者が内容を不適切と判断したコメントは削除されます。
  • このフォームにはスパム対策として、Googleの提供するreCAPTCHAシステムが導入されています。
    (Google Privacy Policy and Terms of Service.)