.htaccess 特定のホスト、IPの許可と制限

eyecatch_732

問題点

WordPressの「wp-admin」ディレクトリーなど、セキュリティー面で少しでも防御するために、BASIC認証をなどを設定することがある。しかし、自分のサイトのWordPressの管理画面に入ってのスクレイピングなど、特殊な用途の場合など、特定のIPを制限したい時などがある。

スポンサーリンク

IPの許可と制限方法

基本的には、各ディレクトリーにおいてある、「.htaccess」ファイルにて設定します。

order allow,deny
allow from all
deny from 制限をかけるホスト、IP
deny from 制限をかけるホスト、IP
deny from 制限をかけるホスト、IP

この設定に関しては、

「order allow,deny」は、allow(許可)、deny(拒否)の順番を記入するという宣言です。この後に記載する、allow、denyの順番が決まりますので、注意が必要です。

「allow from all」は、特定のホスト以外のアクセス全てを許可すると言う意味です。

「deny from」は制限をかけるホスト、IPを指定します。複数指定する場合は、1行ずつ指定します。

まとめると、
許可、拒否の順番に宣言。
すべてのIPアドレスはアクセス許可。
ただし、指定したIPアドレスを除きます。
となります。

BASIC認証なしでアクセスするには

前項の「IPの許可と制限方法」が基本となります。
WordPressの「wp-admin」ディレクトリーにある「.htaccesss」(ない場合は作成)に下記コードを記載。

Satisfy Any

order deny,allow
deny from all
allow from 制限をかけるホスト、IP

AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /WEB公開していないディレクトリー/.htpasswd
require valid-user

この設定は、先ほどとは、逆で、
拒否、許可の順番に宣言。
すべてのIPアドレスはアクセス不可。
ただし、指定したIPアドレスを除きます。
となります。

後半の「AuthType Basic」は一般的なBASIC認証のやり方です。
注意点は、「.htpasswd」をWEB上から見れるディレクトリーに置かないことです。

あえて、最後に説明ですが、「Satisfy Any」はいずれかの条件が通ればよいということです。ここがこのコードのミソです。何も記載していないディフォルトの設定では「Satisfy All」となっており、全ての条件をクリアしないとアクセスできないになっています。

オススメ記事