如何在nginx中匹配包含查询string的已知MIMEtypes的请求?

我正在使用nginx静态地提供资源,并将所有非资产请求路由到PHP前端控制器。 我有一个location块,如下所示:

 location / { include /etc/nginx/mime.types; index index.php; try_files $request_uri $request_uri/ /index.php?$query_string; } 

据我所知,这应该首先尝试匹配任何已知的MIMEtypes的请求,如果没有find匹配的文件,它应该尝试对我的PHP location块(未显示)的请求。

如果我想访问http://example.com/css/owls.css ,这很好用,但如果我尝试访问http://example.com/css/owls.css?t=_423632636 ,它不会认识到“扩展”,所以试图将请求传递到我的PHP入口点(当然,失败)。

我怎么能告诉nginx http://example.com/css/owls.css?t=_423632636 (或任何其他查询string,遵循有效的MIMEtypes)的请求应该首先尝试匹配静态文件css/owls.css

如果文件(没有查询string)不存在,那么它应该回退到PHP的try_files命令。

Nginx会自动执行此操作,下面是try_files行。 注意你正在使用$ request_uri而不是$ uri。 尝试改变这一点。 第一。

 try_files $uri $uri/ /index.php?$args; 

如果这不能解决你的问题,请编辑你的问题,包括你的整个nginx.conf和相关的服务器块。