我在 Windows 10 上运行 Apache 2.4。为了拒绝访问特定目录中的 DLL 文件,我尝试
<Directory "${SRVROOT}/htdocs">
#...
<Files "*.dll">
Require all denied
</Files>
#...
</Directory>
如果没有这个,并且给定一个不存在的文件,例如,foo.dll
它会给出 404。有了配置,同样的不存在的文件foo.dll
会给出 403,所以我知道配置是有效的;但是,当我尝试访问bar.dll
给定目录中存在的文件时,系统会要求我下载它。这是为什么?
我如何知道什么可能会覆盖我的<Files ...>
指令?
答案1
好的,为了实现我的目标,我撤销了一般情况下的所有访问权限,并明确允许单个文件,就像这样。
<Directory "${SRVROOT}/htdocs">
#...
Require all denied
<Files "*.exe">
Options +ExecCGI
SetHandler fcgid-script
Require all granted
</Files>
</Directory>
这可以有效防止加载 .dll 文件以及目录中所有其他无关的内容。