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