4

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

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

一切都按预期工作......

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

4

1 回答 1

4

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

评论澄清后更新

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

第二次更新

根据location的文档:

没有不匹配正则表达式的语法。相反,匹配目标正则表达式并分配一个空块

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

location ~ .*\..+$ {}
于 2012-10-18T06:05:46.233 回答