我有一个我希望拒绝访问的文件夹,但我希望有一个可访问的子目录(及其所有文件和任何子目录)。
示例目录结构:
/modules/
/modules/gallery/public/manifest.xml
/modules/gallery/public/js/core.js
/modules/gallery/public/css/master.css
/modules/news/public/images/status.png
/modules/news/public/css/style.css
.htaccess文件需要在“modules”中,因为它的子目录是用户提供的(它们是CMS的插件),每个用户提供的文件夹可能有一个“公共”目录,只有“public”中的文件和文件夹应该可以访问。
答案 0 :(得分:5)
如果请求包含/public/
,您可以设置环境变量,在 modules 目录的htaccess文件中执行类似的操作:
SetEnvIf Request_URI /public/ ispublic=1
Order Deny,Allow
Deny from all
Allow from env=ispublic
如果您想要更具限制性,可以调整/public/
正则表达式以包含深度,例如,只有1个目录深入模块:
SetEnvIf Request_URI ^/[^/]+/public/ ispublic=1