.htaccess中带有mod_rewrite的动态IP白名单。允许所有IP的条件

时间:2016-06-12 08:41:47

标签: php apache .htaccess mod-rewrite

我有以下代码块,可以让任何拥有IP的白名单文件" access-list"通过访问保存.htaccess文件的目录。我不熟悉这种语法,只是从本网站的某个地方复制了代码,这非常有效:

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(文件为空),它会拒绝所有人。我希望这允许每个人(即空白文件指示,不强制执行访问规则)。

1 个答案:

答案 0 :(得分:0)

您可以尝试完全删除htaccess文件(或者甚至更好地将其重命名为htaccess.txt)。它应该允许每个人进入。然后,如果您需要在特定时间或日期启用,您可以创建一个简单的cronjob,只需将htaccess.txt文件复制到.htaccess即可告诉星期六下午3点或其他任何内容。