![使用 .htaccess 或 vhost.conf 禁止目录中除具有特定名称的子目录之外的所有内容](https://linux22.com/image/797113/%E4%BD%BF%E7%94%A8%20.htaccess%20%E6%88%96%20vhost.conf%20%E7%A6%81%E6%AD%A2%E7%9B%AE%E5%BD%95%E4%B8%AD%E9%99%A4%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E5%90%8D%E7%A7%B0%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
如何使用 htaccess 甚至 vhost.conf 禁止目录中除具有特定名称的任何子目录之外的所有内容?我有一个受保护的主目录,其中包含子目录。每个子目录都有另一个名为“thumbs”的子目录,我想允许人们访问它。在 thumbs 文件夹中,我有一些文件,它们的文件名都以“thumb_”前缀开头。那么应该使用哪种方法,.htaccess FilesMatch 还是 vhost DirectoryMatch?以及应该使用什么代码?谢谢
答案1
因此,如果我理解正确的话,您只希望允许名为 的文件thumb_*
位于名为 的目录中thumbs
,而该目录位于受保护目录的子目录中?不强制使用名为 的目录会更简单thumbs
,因为那时您只需要<FilesMatch>
。
听起来这条路径是,例如,/path/to/protected_dir/subdir/thumbs/thumb_1.png
如果正确的话,这应该会强制执行您正在寻找的限制类型 - 只需确保没有其他可能干扰权限设置的配置块:
<Directory /path/to/protected_dir>
Order Deny,Allow
Deny from all
</Directory>
<LocationMatch "^/url/path/to/protected_dir/[^/]+/thumbs/thumb_.*">
Allow from all
</LocationMatch>
如果您不担心强制执行精确的目录树结构,那么这会简单得多:
<Directory /path/to/protected_dir>
Order Deny,Allow
Deny from all
<FilesMatch "^thumbs_.*">
Allow from all
</FilesMatch>
</Directory>