IPs mit mod_rewrite auszusperren, ist meist zu kompliziert und verbrät immer unnötige Rechenzeit. Stattedvsb hat geschrieben:https://www.modrewrite.de/13.12.0.0.1.0.phtml
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.1 [OR]
RewriteCond %{REMOTE_ADDR} ^192\.168\.0\. [OR]
RewriteRule ^.* - [F]
reicht auch
Order deny,allow
Deny from 127.0.0.1 192.168.0
Einzelne IPs (erste RewriteCond-Zeile, bzw. erste Deny-IP) und grobe Blöcke (an Bytegrenzen der IP, zweite RewriteCond-Zeile bzw. zweite Deny-IP) sind auch die gebräuchlisten Anwendungsfälle, insofern kommt man damit gut und vor allem leicht über die Runden.
Für detailiertere Netzbereiche wie
RewriteCond %{REMOTE_ADDR} ^192.168.(12[89]|13[0-7]). [OR]
(192.168.128.0 bis 192.168.137.255) braucht man allerdings zugegebenermaßen einen Taschenrechner und etwas Geschick zum Erstellen der Netzmaske (die Maske bestimmt, welche Bits einer IP zum Vergleich herangezogen werden). Die obige RewriteCond-Zeile würde folgender Deny-Zeile enstprechen:
Deny from 192.168.128.0/255.255.248.0 192.168.135.0/255.255.254.0
Vor dem Schrägstrich steht wie bei den ersten Beispielen die Vorgabe-IP, die übereinstimmen muss (bzw. die mit Deny ausgesperrt werden soll), hinter dem Schrägstrich die Maske, die bestimmt, welche Stellen der IP (lies: welche Bits) verglichen werden (wie wollen ja einen Bereich und deshalb nicht die vollständige IP vergleichen).
Falls hier jemand gerne knobelt, kann ich das auch mal im Detail erklären.
Davon abgesehen sind die Beispiele auf der angegebenen Seite unsauber:
RewriteCond %{REMOTE_ADDR} ^10.1.23.
# Schliesst 10.1.23.* aus
Sowas schließt mitnichten nur 10.1.23.n aus, sondern auch 10.1.230.n bis 10.1.239.n. Statt 255 IPs macht man damit 2805 IPs platt.
Der Punkt steht in Mustern immer für ein beliebiges Zeichen, also bei IPs nicht nur für den Punkt zwischen den Bytes, sondern auch für 0-9. Korrekt wäre ^12\.1\.12\. . Natürlich fällt das nur bei bestimmten IPs ins Gewicht, Schlamperei ist es aber trotzdem.