我正在努力通过 Apache (2.4.58) 仅允许特定的文件扩展名。
我在 httpd.conf 中执行此操作。
问题是如果我首先拒绝所有文件,则像这样:
<Files *>
Require all denied
</Files>
或者仅Require all denied
在需要的范围内<Directory>
,然后启用我需要的功能,如下所示:
<Files ~ "(.html|.php|.js|.css|.png|.jpg|.gif|.ico|.pdf)">
Require all granted
</Files>
这似乎禁用了目录索引逻辑,当我导航到目录时,Apache 不再重定向到 index.php,除非我直接在 URL 中定位 index.php。
有一个选项可以尝试列出所有要阻止的扩展,但我不喜欢它,因为一般来说它是未知的。我想在这里使用最小特权原则,并根据明确允许的列表进行限制。
那么我该如何做到这一点但仍然保留目录索引功能?
答案1
好的,解决了
<FilesMatch "((^$)|(^.+\.(html|php|js|css|png|jpg|gif|ico|pdf)$))">
Require all granted
</FilesMatch>
使用来自的提示FilesMatch 配置用于限制所提供文件扩展名