apache中禁止访问敏感文件需用files/filesmatch配合require all denied;单文件用,批量用正则匹配并忽略大小写;必须嵌套在对应directory块内;还需禁用目录索引、防止脚本执行并校验配置。

在 Apache 的
直接屏蔽单个敏感文件
适用于明确知道文件名的情况,比如 .env、config.php、db.ini:
<files><br> Require all denied<br></files>
<files><br> Require all denied<br></files>
批量屏蔽常见敏感后缀
用正则匹配多个扩展名,推荐加 (?i) 忽略大小写,覆盖 .ENV、.INI、.LOG 等变体:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<filesmatch><br> Require all denied<br></filesmatch>
- 点号要转义,括号不用转义;
$表示结尾,避免误伤文件名含这些字符串的正常文件
嵌套在 Directory 块内才生效
必须放在对应目录的
- 例如站点根目录为
/var/www/example.com,想保护其下的/config目录: <directory><br> Options -Indexes<br> <files><br> Require all denied<br> </files><br> <filesmatch><br> Require all denied<br> </filesmatch><br></directory>
注意绕过风险和补充措施
仅靠 FilesMatch 不足以完全防住所有路径猜测,还需同步处理:
- 确保该目录下没有 index 文件,否则用户仍可通过目录 URL 访问首页内容
- 搭配
Options -Indexes防止目录列表泄露结构 - 上传目录等高危位置,额外用
Require all denied 阻断脚本执行 - 配置完成后运行
sudo apachectl configtest校验语法,再sudo systemctl reload apache2









