【问题标题】:nginx rewrite string and select portions of stringnginx重写字符串并选择部分字符串
【发布时间】:2014-08-01 04:02:51
【问题描述】:

我目前正在尝试确定是否可以重写

http://example.com/sc5147006x0SvS.gif

进入这个:

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

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

14 和 06 文件夹存在于:

sc5 14 70 06 x0SvS

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

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

【问题讨论】:

  • 1406 总是在同一个地方吗?
  • 是的,这应该可以实现(希望如此)

标签: regex string select nginx rewrite


【解决方案1】:

你可以使用rewrite:

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

alias 在位置:

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

【讨论】:

  • 如果 /14/06/sc5147006x0SvS/sc5147006x0SvS.gif 在根目录中,是否需要更改位置?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多