我需要以下代码的变通方法,因为mod_rewrite的正则表达式模式中不允许变量(%1):
RewriteEngine On
RewriteCond %{THE_REQUEST} \/private\/?
RewriteMap map txt:/var/whitelist.txt
RewriteCond %{THE_REQUEST} \/private\/[0-9]\/([0-9]*)\/ [NC]
RewriteCond ${map:%{REMOTE_ADDR}} !^%1$ [NC]
RewriteRule .* - [F,L]
它应该代表正则表达式捕获的“ 10”(请求URL作为源)。
有一个简单的解决方案吗?
whitelist.txt:
216.3.128.12 10
请求:
http://www.example.com/private/0/10/file.txt
基本上,如果whitelist.txt文件中没有“ 10”(位于匹配IP旁边),则应返回403错误。所以
http://www.example.com/private/0/10/file.txt
将转到文件,但http://www.example.com/private/0/20/file.txt
将返回403。