How can i write this location?

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


Hello!

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

> Hi guys!
> 
> How to set expires the URL like http://a.com/a.js?v=xxx and http://a.com/a.css?v=xxx.
> 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