
Ich habe Probleme mit dem Blockieren einer IP in .htaccess
Ich habe
Require not ip 192.168.20.218
Es funktioniert, blockiert aber das gesamte Netzwerk, anstatt eine einzelne IP zu blockieren.
Kann jemand dieses Problem lösen?
Ich verwende Apache 2.4 mit Ubuntu 14.04.3 LTS
AKTUALISIEREN:Das Szenario ist wie folgt: Ich verwende IP 192.168.20.218
auf meinem Computer und versuche, diese IP-Adresse testweise zu blockieren. Ich habe Folgendes versucht:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
Das soll meinen Zugriff blockieren, aber stattdessen kann ich weiterhin auf die Seite zugreifen. Wenn ich es entferne, Require all granted
wird das gesamte Netzwerk blockiert.
Antwort1
Sie können keinnegiertRichtlinie selbst, um den Zugriff zu autorisieren. Wie indie Dokumentation:
Das Ergebnis der
Require
Direktive kann durch die Verwendung dernot
Option negiert werden. Wie bei den anderen negierten Autorisierungsdirektiven gilt<RequireNone>
:Wenn dieRequire
Direktive negiert wird, kann sie nur fehlschlagen oder ein neutrales Ergebnis zurückgeben und kann daher niemals unabhängig eine Anfrage autorisieren..
Sie müssten stattdessen etwa Folgendes tun:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
Sie lassen also jeden zu und schließen eine bestimmte IP-Adresse aus.
Der <RequireAll>
Container erfordert, wie sein Name schon sagt, dass alle enthaltenen Anweisungen erfüllt werden müssen.
Antwort2
Ich hatte dieses Problem. Ich vergaß, dass ich einen Nginx-Reverse-Proxy eingerichtet hatte. Die in Apache eingehende IP war die Reverse-Proxy-IP von Nginx. Stattdessen musste ich im Reverse-Proxy einen benutzerdefinierten Header mit der tatsächlichen IP festlegen und dann diesen Header in .htaccess überprüfen, anstatt die IP zu überprüfen.