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

时间:2012-10-18 05:58:25

标签: regex file nginx location match

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

location〜。*。(php | jsp | cgi | pl | py)?$ { }

所有工作都按预期进行......

但是,如果我们有没有任何扩展名的文件,我怎么能在“位置”区块中匹配它们?!

1 个答案:

答案 0 :(得分:4)

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

在评论澄清后更新

您可以使用正则表达式[^.]+(?!(php|jsp|cgi|pl|py))$,这意味着匹配多个字符,这些字符不能是句点,并且不会跟随列出的扩展名。

第二次更新

根据docu of location

  

没有与正则表达式匹配的语法。代替,   匹配目标正则表达式并分配一个空块

因此,您希望匹配具有扩展名的每个文件并分配空块。它类似于你的原始正则表达式,但没有?,你最好在扩展名之前逃避点,否则它意味着任何字符。

location ~ .*\..+$ {}