如何仅从请求中提取请求文件的名称



如何从请求中仅提取文件名?

我有这样的网址:

my_domain.com/dir1/image1.png
my_domain.com/dir1/image143.jpg
my_domain.com/dir1/image167658.gif
# [etc, images]

以及这些部分:

location / {
  # [..........]
}
~ ^/dir1/.(jpg|png|gif) {
    set $my_file_name $1;
    # [...........]
}

第一个问题:当我请求上述 URL 之一时,它不会触发第 2 部分

如果我将其更改为:

  /dir1 {
      set $my_file_name $uri;
      # [...........]
  }

它会触发它,是的。但是,在这种情况下,$my_file_name将包含整个URL,而我只需要文件/图像的名称。例如,image143.jpg

问题:

我应该如何更改带有/dir1的部分,以便 1( 它将匹配上面的 URL 和类似的 URL,以及 2( 我将能够从 URL 中提取请求的文件或图像名称?

您需要将

正则表达式与捕获一起使用。

例如:

location ~ ^/dir1/(?<filename>.*.(jpg|png|gif))$ {
    # do something with the $filename variable
}

有关详细信息,请参阅此文档。

相关内容

  • 没有找到相关文章

最新更新