web-dev-qa-db-ja.com

「IPを要求しない」.htaccessが単一のIPで機能しない

.htaccessでIPをブロックできない

置いた

Require not ip 192.168.20.218

機能しますが、単一のIPをブロックするのではなく、ネットワーク全体をブロックします。

誰かがこの問題を解決できますか?

Ubuntu 14.04.3 LTSを使用してApache 2.4で実行しています

PDATE:シナリオはこのようなもので、IPを使用しています192.168.20.218私のコンピューターで、このIPアドレスをブロックするテストを実行しようとしています。

<RequireAll> 
Require all granted 
Require not ip 192.168.20.218 
</RequireAll>

これは私のアクセスをブロックするはずですが、代わりにページへのアクセスを許可しています。 Require all grantedネットワーク全体をブロックします。

アクセスを許可するために、negatedディレクティブを単独で使用することはできません。 ドキュメント で述べたように:

Requireディレクティブの結果は、notオプションを使用して無効にすることができます。他の否定された承認ディレクティブと同様に<RequireNone>Requireディレクティブが否定された場合、失敗するか、中立的な結果を返すだけなので、独立してリクエストを承認することはできません

代わりに、次のようなことを行う必要があります。

<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>

したがって、全員を許可し、特定のIPアドレスを除外します。

<RequireAll>コンテナは、その名前が示すように、含まれているすべてのディレクティブを満たす必要があります。

3
MrWhite

私はこの問題を抱えていました。 nginxリバースプロキシを設定していたのを忘れていました。 Apacheに入るIPは、nginxからのリバースプロキシIPでした。代わりに、真のIPを含むリバースプロキシにカスタムヘッダーを設定し、IPをチェックする代わりに.htaccessでこのヘッダーをチェックする必要がありました。

0
Luke Chinworth