IPアドレスでウェブサイトへのアクセスを制限する方法

※当サイトにはプロモーションが含まれています。

年に1回ぐらいですが、知人などから、ホームページの作成を頼まれることがあります。

本来であれば、ローカル環境で作成するのかもしれませんが、それが面倒くさい。

その為、本番環境に「.htaccess」を置いて、IPアドレスの制限をしてサイトを作成しています。

毎年、記述方法を忘れるので、備忘録として・・・。

特定のIPアドレスを許可する「.htaccess」

特定のIPアドレスを許可する「.htaccess」の記述例。

<IfModule mod_authz_core.c>
  # Apache 2.4
  <RequireAll>
  Require ip 123.456.78.90 # 自宅からのアクセスを許可
  Require ip 98.76.54.32 # クライアントからのアクセスを許可
  </RequireAll>
</IfModule>

<IfModule !mod_authz_core.c>
  # Apache 2.2
  Order Deny,Allow
  Deny from all
  Allow from 123.456.78.90
  Allow from 98.76.54.32
</IfModule>

上記は、Apache2.4と、Apache2.2の両方に対応するための条件分岐をしています。

なお、IPアドレスは、確認くんで確認する事ができます。

IPアドレス確認

このIPアドレスを、ダミーで記載しているIPアドレスの箇所に半角で記載してあげればOKです。

補足として、特定のIPアドレス以外からアクセスがあった場合に、指定したURLへ転送する記述例です。

<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAll>
Require ip 123.456.78.90
Require ip 98.76.54.32
</RequireAll>

# 許可されていないIPは転送する設定 (Apache 2.4用)
<If "%{REMOTE_ADDR} !~ /^123\.456\.78\.90$/ && %{REMOTE_ADDR} !~ /^98\.76\.54\.32$/">
Redirect 302 / https://example.com/forbidden
</If>
</IfModule>

<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from all
Allow from 123.456.78.90
Allow from 98.76.54.32

# 許可されていないIPは転送する設定 (Apache 2.2用)
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123\.456\.78\.90$
RewriteCond %{REMOTE_ADDR} !^98\.76\.54\.32$
RewriteRule ^.*$ https://example.com/forbidden [R=302,L]
</IfModule>

「.htaccess」ファイルを使用する際の注意点

Nginx(エンジンエックス)を使用している場合、.htaccessファイルは使用できないので注意が必要。

なお、Nginxを使用している代表的なレンタルサーバーは、XServer(エックスサーバー)です。

ただし、XServerでは、ApacheとNginxを共存させることで、.htaccessが利用できるようです。

以上です…

備忘録なので、「.htaccess」ファイルの設置の仕方とかはないです。スミマセン。

いずれ、記事を更新もしくは追加したいと思います。