我想要一个类似
的映射map $name $id {
Bob 1;
}
(方案+域为$scheme://$host
)。
我想将/$name/foo
重定向到/bar?param=$id
。
我该怎么做?在示例中,我仅在地图中看到完整的URI。我希望没有
map $uri $mapped_uri {
/Bob/foo /bar?param=1;
/Joe/foo /bar?param=2;
}
因为这将复制硬编码部分。
我想要一个类似
的映射map $name $id {
Bob 1;
}
(方案+域为$scheme://$host
)。
我想将/$name/foo
重定向到/bar?param=$id
。
我该怎么做?在示例中,我仅在地图中看到完整的URI。我希望没有
map $uri $mapped_uri {
/Bob/foo /bar?param=1;
/Joe/foo /bar?param=2;
}
因为这将复制硬编码部分。
例如:
map $name $id {
Bob 1;
Joe 2;
...
default "some_value_for_unknown_name";
}
server {
...
location ~ ^/([^/]+)/foo$ {
set $name $1;
rewrite ^ /bar?param=$id last;
}
...
}
带有一组严格编码的预定义名称的更严格版本可能类似于location ~ ^/(Bob|Joe|...)/foo$ { ... }
您可以使用花药映射来捕获$name
变量。这些发生在周期的早期,可以帮助避免在配置扩展时可能引起问题的正则表达式位置。
map $uri $name {
~^/([^/]+)/foo$ $1;
}
map $name $id {
Bob 1;
Joe 2;
}
server {
if ($id) {
return 302 /bar?param=$id;
}
}