使用.htaccess密码保护目录及其所有子文件夹

时间:2011-03-08 07:36:34

标签: .htaccess password-protection

我正在尝试密码保护子域及其所有子目录和文件,但我对此事的知识非常有限,我该如何去做呢?

提前Thanx!

6 个答案:

答案 0 :(得分:20)

这是一个简单的两步过程

在.htaccess中

AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user

使用http://www.htaccesstools.com/htpasswd-generator/或命令行生成密码 并把它放在.htpasswd

注1:如果您使用的是cPanel,则应在安全部分“密码保护目录”中进行配置

编辑:如果这不起作用,那么你需要在 http.conf 中的.htaccess目录(或至少之前的目录)中执行AllowOverride All后跟一个apache重启

<Directory /path/to/the/directory/of/htaccess>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
</Directory>

答案 1 :(得分:8)

要密码保护Apache提供的目录,您需要在要保护的目录中使用.htaccess文件,以及.htpasswd文件,该文件可以是您的系统上Apache用户可以访问的任何位置(但是将其置于合理的位置并且私人的)。您很可能不希望将.htpasswd放在与.htaccess相同的文件夹中。

.htaccess文件可能已存在。如果没有,请创建它。然后插入:

AuthType Basic
AuthName "Your authorization required message."
AuthUserFile /path/to/.htpasswd
require valid-user

然后使用您想要的任何用户名和密码创建.htpasswd文件。密码应加密。如果您使用的是Linux服务器,则可以使用htpasswd命令为您加密密码。以下是该命令的用法:

htpasswd -b /path/to/password/file username password

答案 2 :(得分:1)

你可能想要使用mod_auth_digest模块。 Apache为使用全套身份验证和授权模块提供了非常好的guide

答案 3 :(得分:1)

您需要生成用于身份验证的密码(用户名+密码)字符串,将其写入文件并将其放在要限制访问的子目录中。

字符串看起来像,

username:hashkey
  • 您可以使用HTTP password generator tool执行此操作。
  • 将从上述站点获得的字符串复制并粘贴到站点webroot外部任何位置的新文件(.htpasswd)(最好保留在用户主目录中的任何位置)。
  • 在.htaccess文件中添加以下行。
AuthType Basic
AuthName "Require Authentication"
AuthUserFile [PATH_TO_FILE]/.htpasswd
Require valid-user
  • 如果密码未触发,请检查.htaccess文件的权限。

  • 如果验证失败,请检查指定位置是否存在.htpasswd文件。 (确保您的用户帐户具有足够的.htpasswd文件权限才能阅读)

  • 您无需重启服务器即可实现此目的。

如果您有任何疑问,请与我们联系。

答案 4 :(得分:0)

要创建正确的密码,您可以创建一个php文件并在本地(在您的计算机上,而不是在Web服务器上)运行它,其中包含以下内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form method="post" accept-charset="utf-8">
    <input type="text" name="clear"/>
    <input type="submit" name="submit" value="generate" />
</form>

<?php
header("Content-Type: text/html; charset=utf-8");

if (isset($_POST['clear']) && $_POST['clear'] != '') {
    $cl = $_POST['clear'];
    $pw = crypt($cl, base64_encode($cl));
    echo $pw;
}
?>
</body>
</html>

我通常将我的.htpasswd文件放在webcontent目录之外的/ htpasswd /目录中,如AuthUserFile /home/www/usr122/files/htpasswd/.sportsbar_reports_htpasswd(而不是在webcontent文件夹/home/www/usr122/html/htpasswd/中)并将.htpasswd文件重命名为它是为了,例如.sportsbar_reports_htpasswd

密码文件本身应该是

testusername:dGATwCk0tMgfM

其中用户名为testusername,密码为testuserpassword

答案 5 :(得分:0)

只需扩展Mahesh的答案即可。

.htaccess
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user

如果您不想使用在线密码生成器,则可以使用openssl

openssl passwd -apr1 your_password

然后将生成的密码输入格式为.htpasswd

username:<generated_password>

示例:

.htpasswd
username:$apr1$ydbofBYx$6Zwbml/Poyb61IrWt6cxu0