我正在写一个Nginxconfiguration的位置块,它是这样的模式的URI: www.mysite.com/a/b/blah/c或www.mysite.com/a/b/blah/c/n 。
如果a和b是固定的,那么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; }
我的问题是:
我已经读过, if语句应该在Nginx中的位置块通常避免,但它似乎与rewrite使用是一个例外。 我在这里rewrite的方式会导致任何问题吗?
如何捕获c并在这里实现条件重写逻辑?
使用正则expression式,如:www.mysite.com/(。)/(。)/ blah / c和$ 1,$ 2build立的url部分。