的nginx服务器uses直pcre为正则表达式库;无论pcre接受,nginx也应如此。
在OpenBSD一些测试与egrep(1)
显示:
$ printf '/t.bak\n/t.bakk\n/t.zipp\n/a.zip\n/.ht\n/t.ht\n' |grep -E '\.(bak|zip)$|/\.' /t.bak /a.zip /.ht $
但OpenBSD's egrep
实际上并未使用PCRE,但regcomp(3)
而不是!然而,PCRE不来与pcregrep
,它不产生相同的结果:
$ printf '/t.bak\n/t.bakk\n/t.zipp\n/a.zip\n/.ht\n/t.ht\n' |pcregrep '\.(bak|zip)$|/\.' /t.bak /a.zip /.ht $
您也可以尝试pcretest
用于测试正则表达式(显然,你必须像#
引用它们):
$ pcretest
PCRE version 8.30 2012-02-04
re> #\.(bak|zip)$|/\.#
data> /t.bak
0: .bak
1: bak
data> /t.baki
No match
data> /.h
0: /.
data> ^D
$
即,总结:只是连接两个表达式与|
应该工作。
location ~* \.(bak|zip)$|/\. {
deny all;
}
然而,对于维修的缘故(因为你已经不得不问这个问题摆在首位),你可能也想除了保留这些表达式为更清楚地了解配置的全部内容。 (两个表达式除了甚至可能是更有效的,由于某种最终的在线优化时合并到一起比,但是这只是我的一个胡乱猜测。)
请提供“点文件”的一个例子 –
点文件作为以点开始任何文件,任何配置或RC文件通常发现在基于Unix系统,如htaccess的,.bashrc中,.zshrc – Dogbert