我有一个文件夹,我希望拒绝访问,但我希望有一个可访问的子目录(及其所有文件和任何子目录).
示例目录结构:
/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
Run Code Online (Sandbox Code Playgroud)
.htaccess文件需要位于"模块"中,因为它的子目录是用户提供的(它们是CMS的插件),每个用户提供的文件夹可能有一个"公共"目录,只有"public"中的文件和文件夹才可访问.
如果请求包含a /public/,您可以设置一个环境变量,在modules目录的htaccess文件中执行类似的操作:
SetEnvIf Request_URI /public/ ispublic=1
Order Deny,Allow
Deny from all
Allow from env=ispublic
Run Code Online (Sandbox Code Playgroud)
如果您想要更具限制性,可以调整/public/正则表达式以包含深度,例如,只有1个目录深入模块:
SetEnvIf Request_URI ^/[^/]+/public/ ispublic=1
Run Code Online (Sandbox Code Playgroud)