Nginx查询关键字匹配的位置

我有以下

location ~ "/foo/(.+)\.\w{3}$" { alias /srv/DM/pictures/store/$1; } 

这正是我想要的,只有一个例外。 如果有一个查询关键字追加到我希望它不匹配的位置:

 MATCH: http://foo/bar.jpg NO: http://foo/bar.jpg?s_thumb NO: http://foo/bar.jpg?large_thumb 

任何想法如何去完成这个?

这是不可能的,因为位置只会与没有查询参数的URI相匹配。 你需要使用一个如果在http://wiki.nginx.org/HttpCoreModule#.24arg_PARAMETER

 if ($is_args) { break; } 

这是我终于工作的方法。 你不能简单地把alias放在if语句中。 但是,您可以使用内部redirect

 server { ...; location /_image { internal; alias /srv/DM/pictures/store/; } location / { ...; if ( $args = '' ) { rewrite "/image/(.*)\.\w{3}$" /_image/$1 last; } ...; }