要匹配具有特定扩展名的文件,我们可以使用:
location〜。*。(php | jsp | cgi | pl | py)?$ { }
所有工作都按预期进行......
但是,如果我们有没有任何扩展名的文件,我怎么能在“位置”区块中匹配它们?!
答案 0 :(得分:4)
正则表达式.*.(php|jsp|cgi|pl|py)?$
匹配任意数量的字符(.*
),后跟另一个字符(.
),并列出所列扩展名(...)?
的零次或一次。由于?
,此正则表达式应该已经匹配没有扩展名的文件,因为您可以验证here。
在评论澄清后更新
您可以使用正则表达式[^.]+(?!(php|jsp|cgi|pl|py))$
,这意味着匹配多个字符,这些字符不能是句点,并且不会跟随列出的扩展名。
第二次更新
没有与正则表达式匹配的语法。代替, 匹配目标正则表达式并分配一个空块
因此,您希望匹配具有扩展名的每个文件并分配空块。它类似于你的原始正则表达式,但没有?
,你最好在扩展名之前逃避点,否则它意味着任何字符。
location ~ .*\..+$ {}