需要通过 Apache 配置仅允许特定的文件扩展名

需要通过 Apache 配置仅允许特定的文件扩展名

我正在努力通过 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 配置用于限制所提供文件扩展名

相关内容