我想过滤对 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>