我想阻止访问隐藏.dot
文件,特别php
是 Nginx 中的文件,但我找不到解决方案。.ht
默认情况下隐藏文件,具体如下:
location ~ \.ht {
deny all;
}
我写了这条规则来匹配所有以开头dot
但它不起作用的文件:
location \.(.+\.*)(.*)\.(.+\.*)(.*)$ {
deny all;
}
以下是一些应隐藏的文件示例
/.foo.php
/path/to/.foo.php
我应该怎么办?
您需要仔细查看
location
块的顺序。这个位置:应该匹配任何带有以 . 开头的路径元素的 URI
.
。但是,它需要放在任何其他正则表达式位置块之上。此外,任何使用修饰符的前缀位置块
^~
都将优先。有关详细信息,请参阅此文档。
另请注意:您问题中的位置块都是错误的。第一个也将匹配
index.html
,而第二个缺少~
正则表达式位置的修饰符。