表示するページをIPアドレスで分岐させる

.htaccessを使って特定のIPアドレスに対して表示するページを変更する方法のご紹介です。
これを用いることで、プライベートIPだけログインページを表示させたり、アクセス制限しているIPに対して別ページにリダイレクトさせたりすることが可能です。

これらは、RewriteEngineを使って実現できます。
以下がその例です。

.htaccess

<files login.php>
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168
RewriteRule login.php$ login-forbidden.php [L]
</files>

上記の例では、login.phpに対して、192.168を含むIPアドレスでなかったらlogin-forbidden.phpにページを差し替えることを行っています。
192.168.*.*はクラスCのプライベートIPなので、プライベート環境からページにアクセスした場合のみlogin.phpがそのまま表示されるようになります。

実際にグローバルIPからアクセスしてみると、URLは変わらずにlogin-forbidden.phpのページが表示されます。
これにより、たとえば第三者から不正ログインアクセスを行われたときに、そのIPのアクセスログを取得してアクセス制限を掛けるといったことが可能です。
Wordpressのような攻撃を受けやすいブログなどには有効な方法です。