我需要解决以下代码,因为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

基本上,如果"10"不在whitelist.txt文件中(在匹配的IP旁边),那么它应该返回403错误 . 所以 http://www.example.com/private/0/10/file.txt 将转到该文件,但 http://www.example.com/private/0/20/file.txt 将返回403 .