有没有一种方法可以处理URL并使用原始的子字符串(模式)形成一个新的URL?

时间:2019-07-16 14:43:51

标签: nginx url-rewriting

我在为其他应用程序提供图像的服务器上安装了Ngninx。但是,图像存储在...等文件夹中。

  • /images/123456A/123456A0001.png
  • /images/123456A/123456A0002.png
  • /images/987654B/987654B0001.png
  • /images/987654B/987654B0002.png

当前,它已配置为接受类似...的请求

  • GET IP/123456A/123456A0001.png
  • GET IP/987654B/987654B0002.png

这里的挑战是当他们发出GET请求时,我不想公开其内部结构。是否可以像这样在内部重写它们??

  • GET IP/123456A0001.png ===> GET IP/123456A/123456A0001.png
  • GET IP/987654B0002.png ===> GET IP/987654B/987654B0002.png

该文件夹是文件名(数字和一个字母)的一部分,但是我不知道如何使用子字符串并形成新的URL。我看到了一些示例,但是它们只是移动参数,并且文本是固定的。

1 个答案:

答案 0 :(得分:0)

rewrite指令可以执行内部重定向。有关详细信息,请参见this document

例如:

rewrite "^/(([^/]{7})[^/]{4}\.png)$" /$1/$2 last;

或者,将正则表达式 locationtry_files指令一起使用。有关详细信息,请参见this document

例如:

location ~ "^/(([^/]{7})[^/]{4}\.png)$" {
    root /images;
    try_files /$1/$2 =404;
}