我有这个 .htaccess 文件,我可以在其中阻止用户从浏览器物理访问文件(它们只能通过系统加载)
Options -Indexes
Order deny,allow
deny from all
Run Code Online (Sandbox Code Playgroud)
但我有一个问题,有时我通过 AJAX 加载文件,然后收到 403 Forbidden。我对 apache 的 mod_access 没什么经验。我一直在阅读目录指令,因为我所有基于 AJAX 的文件都位于一个名为 ajax 的目录中。
但问题是我需要拒绝访问除 ajax 之外的所有目录,而且我缺乏正则表达式技能。
示例目录结构如下所示。
plugins/inventory/ajax
plugins/inventory/controller
plugins/inventory/view
plugins/packages/ajax
plugins/packages/controller
plugins/packages/view
Run Code Online (Sandbox Code Playgroud)
.htaccess 文件位于插件目录中。
你首先需要这样做就是项目架构的失败。不应该通过 Web 访问的脚本文件首先就不应该位于 DocumentRoot 中。
也就是说,这可能会起作用:
RewriteEngine on
<DirectoryMatch "/(?!.*/ajax$)">
Order deny,allow
Deny from all
</DirectoryMatch>
Run Code Online (Sandbox Code Playgroud)