2016-06-12 43 views
0

我有以下代码块,可以让任何拥有白名单文件“access-list”中的IP的人通过访问保存.htaccess文件的目录。我不熟悉这个语法,只是从什么地方本网站复制的代码,这个作品非常好:使用.htaccess中的mod_rewrite动态IP白名单。允许所有IP的条件

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 

访问文件在以下配置格式的条目:

#allowed IP addresses 

123.123.123.123 - 
109.121.142.109 - 

现在我的问题是有些日子我只想让任何人通过,即REMOTE_ADDR不必在允许的IP列表中。所以我想修改相同的代码块,如果“access-list”txt文件是空白的(完全空白,没有ip:0个字符),它不应该实际上拒绝所有人,而是允许所有人。

现在,无论何时,只有一个ip或更多,它允许这些IP并拒绝所有其他IP。这没关系。如果没有IP(文件是空白的),它会拒绝每个人。我希望这是允许每个人(即空白文件指示,没有访问规则强制执行)。

回答

0

您可以尝试彻底删除htaccess文件(或者更好的是将其重命名为htaccess.txt)。它应该允许每个人接触。然后,如果您需要在特定的时间或日期启用,您可以创建一个cronjob,将htaccess.txt文件简单地复制到.htaccess,例如星期六下午3点或其他地方。