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

时间:2015-04-08 16:23:45

标签: .htaccess

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

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

我想要的是什么:有两个不同的用户。我们称他们为“ cUser ”和“ oUser ”。允许cUser访问任何文件。 oUser只允许访问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和我所做的并希望从那里去,但我从来没有让它工作。我究竟做错了什么?我一添加'!'什么时候没有文件需要验证,并且[^]表达式它变得狂野,一些文件可以访问而其他文件没有,没有我认识的模式。那么如何在FilesMatch中执行“NOT”操作?

1 个答案:

答案 0 :(得分:2)

最简单的方法是为上传的文件添加一个新的子目录。这是处理上传文件的最佳方式,而不是将它们加载到与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