【发布时间】:2019-05-10 11:12:03
【问题描述】:
我正在尝试将 IP 动态列入白名单以授予对特定目录的访问权限。一个 php 脚本将不断修改 whitelist.txt 文件以添加/删除条目。
我知道使用 RewriteMap 处理这个问题的正确方法,但我不确定如何设置它。
例如,我希望用户在访问 example.com 时能够正常访问我的网站,但是我想拒绝所有访问块路径/目录“http://example.com/block”中的任何内容的用户访问,但白名单中的那些 IP 地址除外.txt,此外,whitelist.txt 中的那些 IP 地址将只能访问“块”目录中的特定文件夹和文件,请求 eg:
http://example.com/block/123/123.txt
我已经尝试了下面的代码(这是一个粗略的草图,我敢肯定它完全是错误的,但只是为了理解):
RewriteEngine on
RewriteCond %{THE_REQUEST} ^\/block+\ ##apply rules only for /block directory
RewriteMap ipmap txt://var/whitelist.txt
RewriteCond ${ipmap:%{REMOTE_ADDR}} ^\/([0-9]*).txt$ $1 [NC] ##check whitelist for matching IP AND specific dir and file
RewriteRule .* - [F,L]
这当然行不通。当我访问 example.com 时,我的网站会进入无限重定向循环。
whitelist.txt 文件如下所示:
170.172.100.162 123
152.109.211.250 43
62.55.254.83 2345
227.202.162.48 32
203.52.248.55 533
所以 IP 地址 170.172.100.162 将可以访问http://www.example.com/block/123/123.txt
IP 地址 152.109.211.250 将可以访问http://www.example.com/block/43/43.txt
... 等等。
【问题讨论】:
-
看起来,人们不再看
htaccess问题了,我在看一些关于htaccess的问题,他们甚至几个月都没有答案,很高兴有人能提供帮助..
标签: php apache .htaccess http mod-rewrite