Rewrite scheme for url redirect

I’m going crazy with this since I can’t get it working in any way…

I have a subdomain on a server, let’s call it images.site1.com,
dedicated to serve images. Due to some bandwidth limitation i got a more
capable server so the webpages will remain on site1.com but the images
will be moved to images.site2.com

Since I had to change the names of images folders on the new server now
I need to rewrite the urls in order to fit my needs. Only the webserver
on site1.com runs NginX, so i need to do rewrite the original ruls
following a regular expression (regex) and do something like:

http://images.site1.com/oldfolderjpg/123456_1.jpg
–rewrite–>
http://images.site2.com/newfolderjpg/12/34/new_images/123456/123456_image_1_large.jpg

  • The first and most logic rewrite scheme I tought about is:

rewrite ^/oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg
permanent;But it didn’t work (I really don’t know why)

  • The second way I tried out is:

location /oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$ {
rewrite ^
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg
permanent;
}And it didn’t work either…

I tried this config too:

location ~ oldfolder/ {
rewrite ^([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg
permanent;
}But with no luck…

After that I tried an old config cheme i used for another site (on the
same box) for a cdn config:

location ~ /oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9]).jpg
{
rewrite ^/(.*)$
$scheme://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image
$4_large.jpg;
}I’ve been triying in several ways but nginx keeps ignoring my rewrite
scheme redirecting to my default error image located at
images.site1.com/error.jpg

Can anyone help me with this?

I’ll write down my subdomain server config for your facility:

images.site1.com

server {
    listen       80;
    server_name  images.site1.com;
    error_page  404  http://images.site1.com/error.jpg;
    root   /home/sites/site1.com/images;
    }It's a very basic server config, that's why I can't understand

why nginx doesn’t rewrite the images following such scheme…

Posted at Nginx Forum:

Hi Sevy,

Not an nginx expert, but you say :

http://images.site1.com/oldfolderjpg/123456_1.jpg
and
“rewrite ^/oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$”

Shouldn’t the rewrite be :
rewrite ^/oldfolderjpg/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$

Notice the oldfolderjpg instead of oldfolder. That would explain a
lot…

Antoine.

----- Original Message ----
From: sevy [email protected]
To: [email protected]
Sent: Wed, January 26, 2011 10:11:30 PM
Subject: rewrite scheme for url redirect

I’m going crazy with this since I can’t get it working in any way…

I have a subdomain on a server, let’s call it images.site1.com,
dedicated to serve images. Due to some bandwidth limitation i got a more
capable server so the webpages will remain on site1.com but the images
will be moved to images.site2.com

Since I had to change the names of images folders on the new server now
I need to rewrite the urls in order to fit my needs. Only the webserver
on site1.com runs NginX, so i need to do rewrite the original ruls
following a regular expression (regex) and do something like:

http://images.site1.com/oldfolderjpg/123456_1.jpg
–rewrite–>
http://images.site2.com/newfolderjpg/12/34/new_images/123456/123456_image_1_large.jpg

  • The first and most logic rewrite scheme I tought about is:

rewrite ^/oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg

permanent;But it didn’t work (I really don’t know why)

  • The second way I tried out is:

location /oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$ {
rewrite ^
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg

permanent;
}And it didn’t work either…

I tried this config too:

location ~ oldfolder/ {
rewrite ^([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg

permanent;
}But with no luck…

After that I tried an old config cheme i used for another site (on the
same box) for a cdn config:

location ~ /oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9]).jpg
{
rewrite ^/(.*)$
$scheme://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image
$4_large.jpg;

}I’ve been triying in several ways but nginx keeps ignoring my rewrite
scheme redirecting to my default error image located at
images.site1.com/error.jpg

Can anyone help me with this?

I’ll write down my subdomain server config for your facility:

images.site1.com

server {
    listen       80;
    server_name  images.site1.com;
    error_page  404  http://images.site1.com/error.jpg;
    root   /home/sites/site1.com/images;
    }It's a very basic server config, that's why I can't understand

why nginx doesn’t rewrite the images following such scheme…

Posted at Nginx Forum:


nginx mailing list
[email protected]
http://nginx.org/mailman/listinfo/nginx

That was my typeing error cause I was writing this post on a text file
before posting it.
I just meant /oldfolder/ so forget the jpg at the end of the folder
name.

Posted at Nginx Forum:

Hi Sevy,

I looked at your rewrite rule, created a similar setup (with nginx
0.8.53)
and…the rewrite rule works as expected. I attach my setup (the conf
file and
the whole directory in tar.bz2).
The only thing I can think of at this point is that your NGINX was
compiled
without regex support (PCRE).

Feel free to send me your conf file.

Antoine.

----- Original Message ----
From: sevy [email protected]
To: [email protected]
Sent: Wed, January 26, 2011 10:11:30 PM
Subject: rewrite scheme for url redirect

I’m going crazy with this since I can’t get it working in any way…

I have a subdomain on a server, let’s call it images.site1.com,
dedicated to serve images. Due to some bandwidth limitation i got a more
capable server so the webpages will remain on site1.com but the images
will be moved to images.site2.com

Since I had to change the names of images folders on the new server now
I need to rewrite the urls in order to fit my needs. Only the webserver
on site1.com runs NginX, so i need to do rewrite the original ruls
following a regular expression (regex) and do something like:

http://images.site1.com/oldfolderjpg/123456_1.jpg
–rewrite–>
http://images.site2.com/newfolderjpg/12/34/new_images/123456/123456_image_1_large.jpg

  • The first and most logic rewrite scheme I tought about is:

rewrite ^/oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg

permanent;But it didn’t work (I really don’t know why)

  • The second way I tried out is:

location /oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$ {
rewrite ^
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg

permanent;
}And it didn’t work either…

I tried this config too:

location ~ oldfolder/ {
rewrite ^([0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9]).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg

permanent;
}But with no luck…

After that I tried an old config cheme i used for another site (on the
same box) for a cdn config:

location ~ /oldfolder/([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9]).jpg
{
rewrite ^/(.*)$
$scheme://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image
$4_large.jpg;

}I’ve been triying in several ways but nginx keeps ignoring my rewrite
scheme redirecting to my default error image located at
images.site1.com/error.jpg

Can anyone help me with this?

I’ll write down my subdomain server config for your facility:

images.site1.com

server {
    listen       80;
    server_name  images.site1.com;
    error_page  404  http://images.site1.com/error.jpg;
    root   /home/sites/site1.com/images;
    }It's a very basic server config, that's why I can't understand

why nginx doesn’t rewrite the images following such scheme…

Posted at Nginx Forum:

On 26 Jan 2011 21h11 WET, [email protected] wrote:

original ruls following a regular expression (regex) and do
permanent
On images.site1.com config try this:

location /oldfolder {
rewrite ^/oldfolder/(\d{2})(\d{2})(\d{2})_(\d).jpg$
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg?
permanent;
}

— appa

On 27 Jan 2011 14h17 WET, [email protected] wrote:

Because the regexp you posted has curly braces. So, following nginx
wiki (Module ngx_http_rewrite_module) i tried to
wrap it into both single and double quotes but with no result:

I overlooked that :frowning:

Nginx doesn’t redirect my uri requests, so the problem still
remains…

I suggest you check the logs and/pr enable the debug flag and trace
Nginx request processing. It will tell what’s really going on. The
above regex does capture the patterns you want, so something else must
be creating the problems.

— appa

António P. P. Almeida Wrote:

more capable server so the webpages will remain
(regex) and do
tought about is:
On images.site1.com config try this:

location /oldfolder {
rewrite
^/oldfolder/(\d{2})(\d{2})(\d{2})(\d).jpg$
http://images.site2.com/newfolder/$1/$2/new_images
/$1$2$3/$1$2$3_image
$4_large.jpg? permanent;
}

I tried your solution but it has a semantic error cause nginx replies

nginx: [emerg] directive “rewrite” is not terminated by “;”

Because the regexp you posted has curly braces. So, following nginx wiki
(Module ngx_http_rewrite_module) i tried to wrap it
into both single and double quotes but with no result:

location /oldfolder {
rewrite ‘^/oldfolder/(\d{2})(\d{2})(\d{2})_(\d).jpg$’
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg?
permanent;
}

location /oldfolder {
rewrite “^/oldfolder/(\d{2})(\d{2})(\d{2})_(\d).jpg$”
http://images.site2.com/newfolder/$1/$2/new_images/$1$2$3/$1$2$3_image_$4_large.jpg?
permanent;
}

Nginx doesn’t redirect my uri requests, so the problem still remains…

— appa


nginx mailing list
[email protected]
nginx Info Page

Posted at Nginx Forum: