如何在 Apache 中仅允许某些文件

如何在 Apache 中仅允许某些文件

我想过滤对 apache 中某些文件的访问。我只想要 CGI 访问。所以我尝试放入 vhost 文件:

<FilesMatch "\.cgi$">
 Order allow,deny
 Allow from all
</FilesMatch>

<FilesMatch "."> # All other files
 Order allow,deny
 Deny from all
</FilesMatch>

但后者凌驾于一切之上。

谢谢

答案1

我已经在我的测试平台上尝试过了,应该可以。关键是你需要拒绝对你想要控制的目录的所有访问,例如受保护

<Directory "/protected">
    Order allow,deny
    Deny from all
</Directory>

使用此设置,您的所有文件受保护文件夹无法访问。然后您可以按如下方式允许 CGI 访问:

<FilesMatch "\.cgi$">
    Order deny,allow
    Allow from all
</FilesMatch>

您现在应该能够运行任何 CGI 文件。

答案2

我相信您需要按如下方式交换 Order 指令中的值:

<FilesMatch "\.cgi$">
 Order Deny,Allow
 Allow from all
</FilesMatch>

<FilesMatch "."> # All other files
 Order Deny,Allow
 Deny from all
</FilesMatch>

这将默认拒绝所有文件的访问。任何以 .cgi 结尾的文件都将被允许。请参阅关于订单指令的文档了解更多信息。

答案3

这是一种在 .htaccess 文件中仅允许提供 HTML 文件的方法,为 .txt 等文件提供 403 HTTP 状态代码:

# By default, deny access to files like .txt,.json
Order Allow,Deny

# Allow access to default index and HTML files
<FilesMatch "(^$)|(\.(gif|jpg|png|html|php|css|js)$)">
    Allow From All
</FilesMatch>

相关内容