.htaccessで特定のIPアドレス、ホストからのアクセスを制限する方法
.htaccessで特定IP・ホストからのアクセスを制限する方法をまとめました。
特定IP・ホストからのアクセスを拒否する
サイトを荒らす特定のIP・ホストからのアクセスだけを拒否したい場合などに使えます。
記述例
1 2 3 4 |
order allow,deny allow from all deny from 111.222.333.444 deny from .example.com |
解説
order allow,deny #allow(許可)、deny(拒否)の順で制限します
allow from all #全てのアクセスを許可します
deny from 111.222.333.444 #特定のIP(111.222.333.444)からのアクセスを拒否します
deny from example.com #特定のホスト(example.com)からのアクセスを拒否します
複数のIPアドレス、ホストを拒否する場合は、deny from ~ の行を1行毎に追加していきます
特定IP・ホストからのアクセスを許可する
開発中のサイトやテスト環境に関係者だけアクセスできるようにしたいという場合などに使えます。
記述例
1 2 3 4 |
order deny,allow deny from all allow from 111.222.333.444 allow from .example.com |
解説
order allow,deny #deny(拒否)、allow(許可)の順で制限します
deny from all #全てのアクセスを拒否します
allow from 111.222.333.444 #特定のIP(111.222.333.444)からのアクセスを許可します
allow from example.com #特定のホスト(example.com)からのアクセスを許可します
アクセス制限の基本解説
order |
アクセス制限を行う順番 order allow,deny #許可してから拒否 order deny,allow #拒否してから許可 |
---|---|
allow / deny |
アクセスできるユーザーの制御 allow:アクセスを許可します deny:アクセスを拒否します |
特定IPからの特定ディレクトリへのアクセスを、トップページにリダイレクトする
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} ^.*/contact/ RewriteCond %{REMOTE_ADDR} 111.222.333.444 RewriteRule ^(.*)$ / [R=301,L] </IfModule> |
#アクセスしたURLが「contact」ディレクトリ配下の場合
RewriteCond %{REQUEST_URI} ^.*/contact/
#アクセス元IPが(111.222.333.444)の場合
RewriteCond %{REMOTE_ADDR} 111.222.333.444
#トップページへリダイレクト
RewriteRule ^(.*)$ / [R=301,L]