Как отобразить части nginx $request_uri в переменные
В этом вопросе я нашел, кто сопоставить первый каталог $ request_uri с переменной nginx.
Мне нужно сделать это с 2 каталогами и одним файлом: localhost:80/dir1/dir2/file.html сопоставить с localhost:80/$topdir/$secondir/$file
я делаю:
map $request_uri $topdir {
~(?<captured_topdir>[^\/]*[^\/]) $captured_topdir;
}
map $request_uri $secondir{
~([^\/]?<secondir>[^\/]) $secondir;
}
map $request_uri $endpart {
~([^\/]*[^\/]?<endpart>) $endpart;
}
но не повезло, когда я пробую это на nginx, только $ topdir работает правильно!
Спасибо!
1 ответ
Я, наконец, решаю это по-другому, без карты. Просто внутри локации я использовал
if ($request_uri ~ "^(.*)/(.*)/(.*).*$" ) {
set $first $1;
set $second $2;
set $third $3;
}
Тогда теперь $first, $second и $third имеют каждую часть.