How can i write this location?

Maxim Dounin mdounin at
Tue Sep 8 17:57:00 MSD 2009


On Tue, Sep 08, 2009 at 06:08:01PM +0800, Chancey wrote:

> Hi guys!
> How to set expires the URL like and
> only match URL with "?v="
> i write this, but can't invalidation :
>         location ~* \.(js|css)\?v=.* {
>                 expires 1y;
>         }

Location directives doesn't match query string, you have to 
use "if" to check for "v" argument.

Something like this should work:

    location ~* \.(js|css)$ {
        if ($arg_v) {
            expires 1y;

        # no expires for requests without v= argument

Note that generally "if" is evil (search mailing list archive for 
details) and it's use is discouraged.  In this particular case 
it should be safe enough, but expanding the above configuration 
may introduce problems.

Maxim Dounin

More information about the nginx mailing list