2016-06-12 4 views
0

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).

Antwort

0

Sie könnten versuchen, die Datei htaccess vollständig zu entfernen (oder besser nur in htaccess.txt umzubenennen). Es sollte Zugang zu jedem ermöglichen. Dann, wenn Sie zu einer bestimmten Zeit oder an einem bestimmten Tag aktivieren müssen, können Sie einfach einen Cronjob erstellen, der einfach die Datei htaccess.txt in .htaccess kopiert, sagen wir Samstag um 15 Uhr oder was auch immer.

Verwandte Themen