mod_rewrite正则表达式捕获变量在RewriteCond

时间:2018-12-10 04:46:26

标签: regex apache .htaccess mod-rewrite

我需要以下代码的变通方法,因为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。

0 个答案:

没有答案