Переменная захвата регулярного выражения mod_rewrite не работает в RewriteCond - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно обойти следующий код, потому что переменные (% 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...