捕获URI的一部分,并用它在Nginx中进行条件重写

我正在写一个Nginxconfiguration的位置块,它是这样的模式的URI: www.mysite.com/a/b/blah/cwww.mysite.com/a/b/blah/c/n

如果ab是固定的,那么blah可以改变, c可以是三个固定string(optionA,optionB,optionC)中的一个, n是从0,1,2等等开始的数字。 另外,只有当c等于optionB时n才有效,所以在其他情况下,Nginx应该在c之后立即抛出404

我打算写一个位置块如下:

 location ^~ /a/b/ { ... } 

我想在这个位置实现的逻辑:首先从一个给定的URI获取c ,并根据它的值,做三个可能的重写之一。 即

 if (c = optionA) { rewrite ... ... break; } if (c = optionB) { rewrite ... ... break; } if (c = optionC) { rewrite ... ... break; } 

我的问题是:

  1. 我已经读过, if语句应该在Nginx中的位置块通常避免,但它似乎与rewrite使用是一个例外。 我在这里rewrite的方式会导致任何问题吗?

  2. 如何捕获c并在这里实现条件重写逻辑?

使用正则expression式,如:www.mysite.com/(。)/(。)/ blah / c和$ 1,$ 2build立的url部分。