1

我正在尝试使用 htacess 实现以下目标:

** 管理员用户 **

/dir  <= has access to directory listing or parent dir
/dir/subdir-n  <= has access to directory listing of any sub-dir

** 客户用户 **

/dir  <= DOES NOT have access to directory listing or parent dir (preferably Directory Index that points to a blank index.html file)
/dir/subdir-n  <= has access to directory listing of any sub-dir

基本上,我们希望我们的管理员能够看到所有具有管理员登录名的子目录列表,而我们的个人客户只能看到他们的目录,我们将与他们交流,但所有这些目录都具有相同的登录名。

4

1 回答 1

1

这应该可以通过不同子目录的不同 htpasswd 文件来实现。

对于 adminuser,您创建了一个 login:pw 对,并且/dir您需要来自文件的 auth 用户,该文件只有您的 adminuser login:pw。

对于 clientuser,您为该用户创建一个 login:pw 对,并将 adminuser login:pw 对附加到该目录的同一 .htpasswd 文件的新行中。

这样,您的管理员用户可以查看所有目录,而客户端用户只能查看他们自己的目录。

澄清一下,这是您拥有的文件:

/dir
/subdiruser1
/subdiruser1/.htaccess
...
/.htaccess
/.htpasswdadmin
/.htpasswduser1

在 .htpasswdadmin 你会有一行:

admin:weofj2p8jöeoif2p84

在 .htpasswduser1 你有两行:

user1:we2pr832urp823rpup
admin:weofj2p8jöeoif2p84

请注意,您的 htpasswd 文件可以是任何名称,但最好以 .ht 开头,因为许多 apache 配置会阻止 Web 访问此类文件名。此外,您不应该像我的示例那样,让您的 .htpasswd 文件在 webroot 中可访问,而应将它们保存在 Web 无法访问的文件夹中。最后一点:显然您看到了它的局限性,当需要更改或添加新的管理员密码时,您需要将该 login:pw 对添加到所有子目录 .htpasswd 文件中。

如果有人对此有更好的解决方案,我会很好奇。

于 2012-03-19T14:17:50.290 回答