Moin!
Order allow,deny
Allow from 192.168.123.10
Deny from all
- Die Dokumentation besagt:
"Ordering is one of:
Allow,Deny
First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected."Zuerst werden alle Allow-Anweisungen abgearbeitet, es muss eine übereinstimmen, sonst wird die Abfrage abgewiesen. Danach werden die Deny-Anweisungen abgearbeitet, stimmt der Request mit einer überein, wird die Abfrage abgewiesen.
Du lässt einen wichtigen Aspekt aus: Das Default-Verhalten von Order ist das letztgenannte Wort der Anweisung, welches auch dann wirkt, wenn keinerlei Allow oder Deny angegeben ist.
Bei "Order Allow,Deny" gilt also pauschal für alle IPs deny, man kann für einige Bereiche Ausnahmen mit "Allow" formulieren, und innerhalb dieser Bereiche wieder Ausnahmen von der Ausnahme mit "Deny" - so jedenfalls die Theorie. Dass man das explizite "Deny" auch größer machen kann, als den Bereich für "Allow", wäre dann im strengen Sinne ein Konfigurationsfehler der Marke "selber doof".
Dummerweise "funzt es", wenn man das "Order" umdreht: Order Deny,Allow erlaubt pauschal erstmal alles, dann kommt als Ausnahme davon das Verbot mit "Deny" (bei "Deny from all" wird die Pauschalerlaubnis also komplett aufgehoben), und Ausnahmen von der (global wirkenden) Ausnahme sind dann mit "Allow" wirksam.
Ich hab bei sowas allerdings leichte Bauchschmerzen, denn Fakt ist, dass man hier erstmal eine globale Erlaubnis konfiguriert - wenn man das Deny falsch einstellt und unwirksam macht, gilt die Pauschalerlaubnis (ggf. ergänzt durch die explizite Erlaubnis mit "Allow"), man kann sich hierbei also potentiell auf der unsicheren Seite irren und bemerkt es ggf. nicht, weil man sich selbst ja in der Regel Zugriff konfigurieren wird. Umgekehrt wäre besser.
- Deine RewriteRule bewirkt auch nicht, dass nach der Umleitung die Zugriffsbeschränkungen nicht abgearbeitet werden. Das ist eine Konfigurationsdatei und kein Programm!
Die RewriteRule und die RewriteCond sind insbesondere reguläre Ausdrücke, bei denen Punkte Sonderbedeutung haben und escaped werden müssen.
- Sven Rautenberg