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 :-)