How can i write this location?

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;
    }

2009-09-08

Chancey

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 D.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs