Rewriting a filename in any directory


#1

I am trying to achieve the following:

Request: http://www.domain.com/images/afv-585785-something.gif
Would normally retrieve from : /public/images/afv-585785-something.gif

I need it to actually retrieve : /public/images/something.gif

So basically it needs to remove the “afv-######-” portion from the file
request.

I am doing this for cache/expire versioning purposes. I tried the
following but it only works on the root folder and not subdirectories.

location / {
rewrite ^(.)/afv-(.)-(.*)$ $1/$3 last;
}

What am I doing wrong?

Thanks,
Bompus


#2

On Thu, Jan 22, 2009 at 11:31:01PM -0700, Aaron wrote:

following but it only works on the root folder and not subdirectories.

location / {
rewrite ^(.)/afv-(.)-(.*)$ $1/$3 last;
}

What am I doing wrong?

What do you mean by subdirectories ?


#3

My current rewrite works for
http://www.domain.com/af-856757-filename.txt
but not for http://www.domain.com/directory/af-656556-filename.txt


#4

On Fri, Jan 23, 2009 at 09:09:22AM -0700, Aaron wrote:

My current rewrite works for http://www.domain.com/af-856757-filename.txt
but not for http://www.domain.com/directory/af-656556-filename.txt

Do you have

 location /directory/ {

?


#5

On Fri, Jan 23, 2009 at 11:47:50AM -0700, Aaron wrote:

No… We have MANY directories and I need a rewrite rule that will work
for all subdirectories as well as the root without having to specify
the location for each directory.

If only “location /” matches /directory/, then it should work.

Also you may set

   rewrite ^(.*)/afv-(.*)-(.*)$ $1/$3 last;

on server level, then it will work for all locations.


#6

No… We have MANY directories and I need a rewrite rule that will work
for all subdirectories as well as the root without having to specify
the location for each directory.