我不确定该怎么做,但我想阻止对我的 Web 服务器上特定文件夹集的所有访问。例如 secret01 和 secret 02...
homeDir
|- data
|- www
| |- .htaccess (file)
| |- images
| |- js
| |- secret01
| |- secret02
| |...
|...
我需要向我的根 .htaccess 文件添加哪些规则才能实现这一点?我希望阻止所有来自网络的访问进入这些文件夹,仅此而已。唯一可以访问这些文件夹的方法就是通过SFTP
或SSH
。那么我要寻找什么规则呢?我最好寻找一行代码,这样我就可以添加更多文件夹或将其移动到其他站点。我真的希望规则可以放在 .htaccess 根文件中,这样我就不必到处跳来跳去锁定和解锁文件夹。
= 更新清晰度 =
我无法访问此主机的 conf 文件(它处于共享环境中),并且我需要将这些文件夹放在 webroot 中,以便用于一些 shell 用途。如果可以的话,我早就将它们移出 webroot 了。
我也不想搞乱文件权限,只想制定一条规则.htaccess
来阻止网络流量访问文件夹或一组文件夹。
答案1
你可以创建一个 .htaccess 文件
DENY FROM ALL
对于文件夹(将文件放入其中)。
同样在 www/.htaccess 上使用 mod_rewrite:
RewriteEngine On
RewriteRule ^(secret1|secret2|asdf) - [F,L]
答案2
如果您确实不希望它们通过 HTTP 访问 Internet,那么您应该将它们完全移出 Web 树。
您还可以使用文件系统权限。例如,如果 Apache 以用户身份运行apache
,但您希望文件只能通过 SSH 访问,那么user23
您可以设置 secret* 为所有者user2
,但不能公开读取。当然,这里还有几乎无穷无尽的其他选项。组、文件系统 ACL 等等。
对于 ACL,您可以使用 mod_authz。最好将配置保留在 conf 中,而不是 中.htaccess
。将它们保留在 中.htaccess
会引入更多暴露,并可能被较低权限的人操纵。