Problems with some rewrite
revirii
nginx-forum at nginx.us
Tue Aug 24 11:15:46 MSD 2010
Greetings,
i'm currently facing a problem with some rewrites. Given an url i have
to rewrite it to a local folder.
url: www.domain.com/img/default/420006675369688559/image.png
doc root: /home/images/public/
local path (under doc root): 420/006/420006675369688559/default.png
So the rewrite rule should take the number and split it, taking the 1st
(420) and 2nd (006) three numbers out of the url and rewrite it to the
local path. But the number isn't always that long, it may also be only 1
to 5 places long, e.g. 1, 12345 and 456 are possible. If the number is
less than 6 places long, the rewrite should fill up the missing places
with the character x.
Optional there's a hyphen in front of the long number, e.g.
/img/default/[b]-[/b]420006675369688559/image.png
Brilliant concept, but i wasn't asked... So far, so bad. So i wrote some
rules, but as you might suggest, they don't work. Here they are...
[code]
# 1 number
location "/img/default/-?([0-9] {1})/$" {
rewrite "/img/default/([0-9-] {1})/(.*)\.(.*)$"
/$1xx/xxx/$1/default.$3;
}
# 2 numbers
location "/img/default/-?([0-9] {2})/$" {
rewrite "/img/default/([0-9-] {2})/(.*)\.(.*)$"
/$1x/xxx/$1/default.$3;
}
# 3 numbers
location "/img/default/-?([0-9] {3})/$" {
rewrite "/img/default/([0-9-] {3})/(.*)\.(.*)$"
/$1/xxx/$1/default.$3;
}
# 4 numbers
location "/img/default/-?([0-9] {4})/$" {
rewrite "/img/default/([0-9-] {3})([0-9] {1})/(.*)\.(.*)$"
/$1/$2xx/$1$2/default.$3;
}
# 5 numbers
location "/img/default/-?([0-9] {5})+/$" {
rewrite "/img/default/([0-9-] {3})([0-9] {2})/(.*)\.(.*)$"
/$1/$2x/$1$2/default.$3;
}
# 6 or more numbers
location "/img/default/-?[0-9]+/$" {
rewrite "/img/default/(-?[0-9]+ {3})(-?[0-9]+
{3})(-?[0-9]+)/(.*)\.(.*)$" /$1/$2/$3/default.$5 break;
}
[/code]
Maybe i don't even need the locations... I've tried the last rule alone,
with a rewrite to a website, but even that doesn't work, so there must
be some severe (logical) error in the location/rewrite rule.
Any help would be weclome :-)
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,123057,123057#msg-123057
More information about the nginx
mailing list