さて、これとは少し異なる質問があります。2つの変数を同時にマップするのではなく、他の2つをパラメーターとして使用して1つの変数をマップしたいのです。
確かに私はマップディレクティブに関するドキュメントを読みました:
バージョン0.9.0より前では、最初のパラメーターで指定できる変数は1つだけでした。
したがって、私はnginx 1.8を持っているので、最初のパラメーターで複数の変数を使用できると期待しています。
これにより、この例では最後の2つのマップディレクティブのようなものを書くことができると思いました。
map $http_user_agent $bot {
default "";
"~*Googlebot" "yes";
"~*MJ12bot" "yes";
"~*bingbot" "yes";
etc.
}
map $request $bot $np {
default "" "";
default "yes" "";
"~*newproject" "" "yes";
"~*newproject" "yes" "";
}
map $bot $np $regular {
"" "" "yes";
"" "yes" "";
"yes" "" "";
}
しかし、それは機能しません(をnginx -t
返します
「map」ディレクティブの引数の数が無効です
)
それでは、最初のパラメータでいくつかの変数を指定することはどのように可能ですか?または、ドキュメントを誤解した場合、実際にはドキュメントはどういう意味ですか?
質問への回答を追加しましたが、実際には、この質問はXY問題meta.stackexchange.com/questions/66377/what-is-the-xy-problem
—
Alexey Ten
多分それは(そして私はそれらについて知りませんでした)一種です。しかし、それは実際には不可能だと本当に思っていたので、ドキュメントで理解できないことがありました。はっきりしている。
—
zezollo 2016