regex-如何匹配nginx中扩展名较少的文件的位置?

要匹配具有特定扩展名的文件,我们可以使用以下命令:

位置〜.*.(php | jsp | cgi | pl | py)?${
}

并且所有工作都按预期进行…

但是,如果我们有没有任何扩展名的文件,该如何在“位置”块中将它们匹配呢?

最佳答案
正则表达式.*.(php | jsp | cgi | pl | py)?$匹配任意数量的字符(.*),后跟另一个字符(.)和零或一个出现的扩展名(…)?.由于您可以验证here,因此该正则表达式应该已经与没有扩展名的文件匹配,因为?.

评论澄清后更新

您可以使用正则表达式[^.](?!(php | jsp | cgi | pl | py))$表示要匹配多个字符,这些字符不能为句号,且后接扩展名.

第二次更新

根据docu of location

there is no syntax for NOT matching a regular expression. Instead,
match the target regular expression and assign an empty block

因此,您要匹配每个具有扩展名的文件并分配空块.它类似于您的原始正则表达式,但没有?并且最好将扩展名前的点转义,否则意味着任何字符.

location ~ .*\..+${}

相关文章

文章浏览阅读3.7k次,点赞2次,收藏5次。Nginx学习笔记一、N...
文章浏览阅读1.7w次,点赞14次,收藏61次。我们在使用容器的...
文章浏览阅读1.4k次。当用户在访问网站的过程中遇到404错误时...
文章浏览阅读2.7k次。docker 和 docker-compose 部署 nginx+...
文章浏览阅读1.3k次。5:再次启动nginx,可以正常启动,可以...
文章浏览阅读3.1w次,点赞105次,收藏182次。高性能:Nginx ...