我有不同的文件夹,我想阻止访问。但我不想区分不同的文件夹。
因为我有 htaccess 和 htpasswd 适用于
/admin1
/admin2
/admin3
我希望如果用户从 admin1 文件夹输入用户名密码,那么他将能够访问 admin2 和 admin3,而无需再次输入用户名和密码
但是如果有人只访问 admin2 那么他必须输入用户名和密码
类似于单点登录
我通过网页界面访问这些http://abc.com/admin
答案1
是的,有两个选择。
选项 1)
在您想要保护的每个目录中都有类似或相同的 .htaccess 文件,它们引用单个 .htpassword 文件:
AuthUserFile /etc/httpd/.htpasswd
AuthName "Some Secret FIles"
AuthType Basic
require valid-user
选项 2)将单个 .htaccess 文件符号链接到每个目录(这意味着如果你更改主 .htaccess 文件中的任何内容,所有符号链接都将更新
答案2
您不必将同一个文件放在所有不同的文件夹中,而是可以限制对公共父文件夹的访问。例如:
/parent <-- this folder is protected by .htaccess
/parent/admin1
/parent/admin2
/parent/admin3
这样,您就只需要维护一个.htaccess
文件。
另一种方法是.htaccess
使用符号链接将同一个文件链接到所有三个文件夹中(如果您使用的是基于 *nix 的操作系统/Windows,则在 NTFS 上可能会使用连接)。但我不确定 Apache 是否允许将符号链接作为.htaccess
文件
答案3
简短的回答是肯定的,您可以使用相同的 .htaccess 文件。
HTTP 身份验证的工作原理如下。您只需将相同的 .htaccess 复制到所有三个文件夹,用户就可以浏览所有三个文件夹,而无需再次输入密码。身份验证基本上取决于密码文件,只要密码文件相同,其余的都无关紧要。它将在您的域中的任何地方工作。因此,您可以使用相同的 .htaccess 文件。
答案4
尝试这个:
#####
SetEnvIf Request_URI ^/admin1 auth=1
SetEnvIf Request_URI ^/admin2 auth=1
SetEnvIf Request_URI ^/admin3 auth=1
AuthName "Please login"
AuthType Basic
AuthUserFile /path_to_file_which_contains_user_login_pwd/.htpasswd
## first, allow everybody
Order Allow,Deny
Satisfy any
Allow from all
Require valid-user
# then, deny only if required
Deny from env=auth
#####