【发布时间】:2012-10-08 12:28:45
【问题描述】:
要匹配具有特定扩展名的文件,我们可以使用:
位置 ~ .*.(php|jsp|cgi|pl|py)?$ { }
一切都按预期工作......
但是如果我们有没有任何扩展名的文件,我怎么能在“位置”块中匹配它们?!
【问题讨论】:
标签: regex file nginx location match
要匹配具有特定扩展名的文件,我们可以使用:
位置 ~ .*.(php|jsp|cgi|pl|py)?$ { }
一切都按预期工作......
但是如果我们有没有任何扩展名的文件,我怎么能在“位置”块中匹配它们?!
【问题讨论】:
标签: regex file nginx location match
正则表达式 .*.(php|jsp|cgi|pl|py)?$ 匹配任意数量的字符 (.*),后跟另一个字符 (.) 和列出的扩展名 (...)? 的零次或一次出现。由于?,此正则表达式应该已经匹配没有扩展名的文件,因为您可以验证here。
评论澄清后更新
您可以使用正则表达式[^.]+(?!(php|jsp|cgi|pl|py))$,这意味着匹配多个字符,这些字符不能是句点并且后面不能跟列出的扩展名。
第二次更新
没有不匹配正则表达式的语法。反而, 匹配目标正则表达式并分配一个空块
因此,您希望匹配每个具有扩展名的文件并分配空块。它类似于您的原始正则表达式,但没有?,您最好在扩展名之前转义点,否则它意味着任何字符。
location ~ .*\..+$ {}
【讨论】: