Apache 如何使用.htaccess拒绝除一个目录名之外的所有目录名?

Apache 如何使用.htaccess拒绝除一个目录名之外的所有目录名?,apache,.htaccess,Apache,.htaccess,我有一个.htaccess文件,在这个文件中我阻止用户从浏览器中实际访问文件(在浏览器中,只能通过系统加载文件) 不过我有一个问题,有时候我通过AJAX加载文件,结果得到403个文件。我对apache的mod_访问几乎没有经验。我一直在阅读,因为我所有基于AJAX的文件都在一个名为AJAX的目录中 但问题是,我需要拒绝访问除ajax之外的所有目录,而且我缺乏正则表达式技能 一个示例目录结构如下所示 plugins/inventory/ajax plugins/inventory/controll

我有一个.htaccess文件,在这个文件中我阻止用户从浏览器中实际访问文件(在浏览器中,只能通过系统加载文件)

不过我有一个问题,有时候我通过AJAX加载文件,结果得到403个文件。我对apache的mod_访问几乎没有经验。我一直在阅读,因为我所有基于AJAX的文件都在一个名为AJAX的目录中

但问题是,我需要拒绝访问除ajax之外的所有目录,而且我缺乏正则表达式技能

一个示例目录结构如下所示

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

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

.htaccess文件位于plugins目录中。

您首先需要这样做是项目架构的一种失败。Web永远无法访问的脚本文件首先不应该位于DocumentRoot中

也就是说,这可能会起作用:

RewriteEngine on
<DirectoryMatch "/(?!.*/ajax$)">
   Order deny,allow
   Deny from all
</DirectoryMatch>
重新编写引擎打开
命令拒绝,允许
全盘否定

谢谢你的提示,原因是人们正在编写插件,这些插件会自动加载到系统中,并且应该能够放到某个位置。嗯,很有趣。那么,什么,他们需要在DocumentRoot中,因为他们是通过HTTP PUT或其他方式发布的?我明白你的意思,我们可以用不同的方式实现插件。它们只是系统开发人员可以用来为系统编程插件的目录。似乎我在尝试任何操作时都会遇到500个内部服务器错误。文档中的项目和答案的多个组合。@Ólafur:在
.htaccess
中不允许使用这两个指令,只能在服务器配置中使用。在您链接到自己的手册页面中查看其“上下文”属性。
RewriteEngine on
<DirectoryMatch "/(?!.*/ajax$)">
   Order deny,allow
   Deny from all
</DirectoryMatch>