如何使用FilesMatch排除.htaccess文件中的术语



所以我已经尝试设置一个更具体的.htaccess文件几个小时了,但我不明白发生了什么。

设置:几个php文件用于操作,我们可以将其简化为'index.php'和'open.php和'upload.php';然后有上传的文件,我们不知道他们的名字,也不知道会有多少。

我想要的:有两个不同的用户。让我们称它们为"cUser"one_answers"oUser'。cUser可以访问任何文件。o用户只能访问open.php和上传的文件。

我做了什么:这是我的.htaccess文件:

AuthType Basic
AuthName "Download"
AuthUserFile /[...]/.htusers

然后是

<FilesMatch "[^(open.php)]$">
Require user cUser
</FilesMatch>

<FilesMatch "!(open.php)">
Require user cUser
</FilesMatch>

以及许多其他不同的尝试。我本以为除了oUser之外的任何文件都需要cUser,我想从那里开始,但我从来没有让它工作过。我做错了什么?我一加上一个"!"再也没有文件需要身份验证了,用[^]表达式,它变得狂野起来,有些文件可以访问,而另一些文件则无法访问,我无法识别任何模式。那么,如何在文件匹配中执行"NOT"呢?

最简单的方法是为上传的文件添加一个新的子目录。无论如何,这是处理上传文件的最佳方式,而不是将它们加载到与php文件相同的目录中。现在主目录中有一个htaccess文件:

AuthType Basic
AuthName "Download"
AuthUserFile /[...]/.htusers
Require user cUser
<FilesMatch "open.php">
Require user cUser oUser
</FilesMatch>

以及用于上传的目录中的第二个htaccess文件:

AuthType Basic
AuthName "Download"
AuthUserFile /[...]/.htusers
Require user cUser oUser

相关内容

最新更新