我可以对 Linux 服务器上的不同文件夹使用一个 .htaccess 文件吗

我可以对 Linux 服务器上的不同文件夹使用一个 .htaccess 文件吗

我有不同的文件夹,我想阻止访问。但我不想区分不同的文件夹。

因为我有 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
#####

相关内容