nginx重写字符串并选择字符串的一部分

时间:2014-06-11 07:34:48

标签: regex string select nginx rewrite

我目前正试图弄清楚是否有可能重写

http://example.com/sc5147006x0SvS.gif

进入这个:

http://example.com/14/06/sc5147006x0SvS/sc5147006x0SvS.gif

用户仍然使用以前的网址作为地址。

14和06文件夹存在于:

sc5 14 70 06 x0SvS

编辑:14和06总是在同一个地方,他们只是改变价值。

有没有办法在提取后从字符串中选择那些部分?

2 个答案:

答案 0 :(得分:2)

您可以使用rewrite

rewrite ^((/...(..)..(..).+)\.gif)$ /$3/$4$2$1 last;
位置

alias

location ~ ^((/...(..)..(..).+)\.gif)$ {
    alias /path/to/root/$3/$4$2$1;
}

答案 1 :(得分:0)

如果您的字符串长度是明确的,如示例所示。您可以使用正则表达式:

(?<=\w\/)((.{3}(.{2}).{2}(.{2}).+)\..+)$

Demo
这里的组是:
1 = sc5147006x0SvS.gif
2 = sc5147006x0SvS
3 = 14
4 = 06
现在使用这些组来形成结果URL。