Nginx位置匹配正则表达式不起作用

时间:2016-10-13 07:17:08

标签: regex nginx

我无法将位置与下面提到的模式匹配,我想将expires标头设置为24小时。但它不起作用。如果我只使用下面提到的正则表达式,它可以工作:

location ~* .*abc\.php.* {
expires 24h;
}

以下示例不起作用。

location ~* .*abc\.php.*xyz=detail.*login_something=.* {
expires 24h;
}

" abc.php"之间和之后有很多内容。 &安培; " XYZ =细节" &安培; " login_something ="所以我只能使用。*。

提前致谢!

1 个答案:

答案 0 :(得分:1)

有多种方法可以实现您的目标,但最简单的方法是将大型正则表达式应用于包含整个URI(包括查询字符串)的变量。这将是$request_uri

第二个问题是如何操纵expires而不是使用多个块并且必须在每个块中重新实现PHP指令,只需使用map指令as detailed in the expires documentation

例如:

map $request_uri $expires {
    default                                   off;
    ~*abc\.php.*xyz=detail.*login_something=  24h;
}

server {
    ...
    expires $expires;
    ...
}