Ich habe den folgenden Code-Block, mit dem jeder, der seine IP in der Whitelist-Datei "access-list" hat, Zugriff auf das Verzeichnis mit der .htaccess-Datei erhält. Ich bin nicht mit dieser Syntax vertraut und kopiert einfach den Code von irgendwo auf dieser Seite und das funktioniert sehr gut:Dynamische IP-Whitelist mit mod_rewrite in .htaccess. Bedingung für das Zulassen aller IPs
RewriteEngine on
RewriteMap hosts-allow txt:/etc/apache2/access-list
RewriteCond %{REMOTE_ADDR} ^(\d+)\.(\d+)\.(\d+)\.(\d+)$
RewriteRule .* - [E=Va:%1,E=Vb:%2,E=Vc:%3,E=Vd:%4]
RewriteCond ${hosts-allow:%{ENV:Va}.%{ENV:Vb}.%{ENV:Vc}.%{ENV:Vd}|black} ^black$
RewriteCond ${hosts-allow:%{ENV:Va}.%{ENV:Vb}.%{ENV:Vc}.*|black} ^black$
RewriteCond ${hosts-allow:%{ENV:Va}.%{ENV:Vb}.*.*|black} ^black$
RewriteRule ^sorry.html
Die access-Datei hat Einträge in der folgenden Konfigurationsformat:
#allowed IP addresses
123.123.123.123 -
109.121.142.109 -
Jetzt Mein Problem ist an manchen Tagen möchte ich einfach niemanden durchlassen, dh REMOTE_ADDR muss nicht auf der erlaubten IP-Liste stehen. Also möchte ich den gleichen Codeblock so modifizieren, dass, wenn die "access-list" -TXT-Datei leer ist (komplett leer ohne ip darin: 0 Zeichen), sie nicht wirklich jeden leugnen sollte, sondern es allen erlaubt.
Gerade jetzt, wenn es eine IP oder mehr gibt, erlaubt es diese IPs und leugne alle anderen. Das ist in Ordnung. Wenn es keine IP gibt (Datei ist leer), werden alle abgelehnt. Ich möchte, dass dies jedem erlaubt ist (d. H. Eine leere Datei zeigt an, dass keine Zugriffsregeln durchgesetzt werden).