.htaccess拒绝除一些目录以外的所有内容

时间:2012-06-20 21:03:43

标签: apache .htaccess

我有一个我希望拒绝访问的文件夹,但我希望有一个可访问的子目录(及其所有文件和任何子目录)。

示例目录结构:

/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”中的文件和文件夹应该可以访问。

1 个答案:

答案 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