Мне нужно обойти следующий код, потому что переменные (% 1) не разрешены в шаблонах регулярных выражений для mod_rewrite:
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
request:
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.