我有以下
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; } ...; }