如何从请求中仅提取文件名?
我有这样的网址:
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
}
有关详细信息,请参阅此文档。