2009-06-29 69 views
3

我有这个.htaccess文件,我阻止用户从物理上的浏览器(他们只能通过系统加载)如何用.htaccess拒绝所有目录名称?

Options -Indexes 
Order deny,allow 
deny from all 

访问文件,我有一个问题,虽然,有时我通过AJAX和加载文件我得到了403禁止。我对Apache的mod_access几乎没有经验。我一直在阅读directory directive,因为所有基于AJAX的文件都位于一个名为ajax的目录中。

但事情是我需要拒绝所有目录除了称为ajax的所有目录和我的正则表达式技能缺乏。

示例目录结构是这样的。

plugins/inventory/ajax 
plugins/inventory/controller 
plugins/inventory/view 

plugins/packages/ajax 
plugins/packages/controller 
plugins/packages/view 

.htaccess文件位于plugins目录中。

回答

3

你首先需要做的是项目架构的失败。应该永远无法访问的脚本文件不应该放在您的DocumentRoot中。

这就是说,这将可能工作:

RewriteEngine on 
<DirectoryMatch "/(?!.*/ajax$)"> 
    Order deny,allow 
    Deny from all 
</DirectoryMatch> 
+0

感谢上的提示,这样做的原因是,人们在写一个自动加载到系统中的插件,应该能够拖放到位置。 – 2009-06-29 11:17:43