【发布时间】:2016-06-12 08:41:46
【问题描述】:
我有以下代码块,它允许任何在白名单文件“access-list”中拥有其 IP 的人都可以访问包含 .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 列表中。所以我想修改这个相同的代码块,如果“访问列表”txt文件是空白的(完全空白,其中没有ip:0个字符),它实际上不应该拒绝所有人,而是允许所有人。
现在,只要有一个或多个 IP,它就会允许这些 IP,而拒绝所有其他 IP。这没关系。如果没有IP(文件为空白),则拒绝所有人。我希望这允许所有人(即空白文件指示,不强制执行访问规则)。
【问题讨论】:
标签: php apache .htaccess mod-rewrite