如何将nginx $ request_uri部分映射到变量中

时间:2017-08-09 23:01:52

标签: regex dictionary nginx request-uri

我在this question找到了将$ 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 个答案:

答案 0 :(得分:0)

我最终以不同的方式解决了这个问题。就在我用过的位置

        if ($request_uri ~ "^(.*)/(.*)/(.*).*$" ) {
            set  $first  $1;
            set  $second $2;
            set  $third $3;
        }

然后现在,$ first,$ second和$ third各有一部分。