回答
这是一个简单的两步过程
在你的.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,则应在安全部分配置“密码保护目录”
编辑:如果这没有工作,那么propably你需要的http.conf接着是Apache的重新启动做AllowOverride All
到的.htaccess的目录(或至少到以前的)
<Directory /path/to/the/directory/of/htaccess>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
您可能想要使用
mod_auth_digest
模块。 Apache提供了一个非常好的
guide来使用全方位的认证和授权模块。
检查了这一点:“这个模块实现HTTP摘要认证(RFC2617),并提供了一个mod_auth_basic替代了密码不以明文方式传输的情况,但与基本认证相比,这不会带来显着的安全优势,另一方面,服务器上的密码存储在摘要式身份验证中的安全性远远低于基本身份验证。疗法因此,使用基本身份验证和使用mod_ssl加密整个连接是一个更好的选择。“ – biocyberman 2017-02-24 10:08:20
@biocyberman,感谢您的纠正。我会留下这个帖子作为对未来的警告。 – sarnold 2017-02-27 06:48:27
要密码保护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
你需要生成用于认证的密码(用户名+密码)字符串,它写入一个文件,并将其放置要限制子目录中访问。
字符串的样子,
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文件上具有足够的权限来读取)
您不需要重新启动服务器即可实现此目的。
如果您有任何疑问,请让我知道。
要建立正确的密码,您可以创建一个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文件中一个名为/ htpasswd/webcontent目录之外的目录,例如AuthUserFile /home/www/usr122/files/htpasswd/.sportsbar_reports_htpasswd
(而不是webcontent文件夹中的/home/www/usr122/html/htpasswd/
),并将.htpasswd文件重命名为它的用途,例如.sportsbar_reports_htpasswd
密码文件本身应该像
testusername:dGATwCk0tMgfM
,其中用户名是testusername
,密码为testuserpassword
- 1. 使用.htaccess密码保护目录
- 2. 用.htaccess密码保护目录
- 3. .htaccess密码保护没有索引文件的目录
- 4. htaccess vs密码保护目录
- 5. 使用web.config密码保护文件夹
- 6. htaccess的保护所有子文件夹和文件
- 7. 用htaccess密码保护的文件夹现在隐藏在目录列表中?
- 8. 保护文件夹及其文件
- 9. 密码保护IntelliJ中的文件夹/目录 - Maven项目
- 10. 如何从根文件夹及其所有子文件夹生成目录树?
- 11. .htaccess密码保护目录,但允许图像文件类型
- 12. 使用find来删除所有的子目录(及其文件)
- 13. 密码保护.htaccess
- 14. nginx密码保护目录代码适用于所有域
- 15. ActionScript - 从密码保护目录(.htaccess)使用PHP加载资产?
- 16. 使用.htaccess密码保护虚拟目录
- 17. 统计目录及其子目录中的所有文件
- 18. 打印目录及其子目录中的所有文件
- 19. .htaccess保护根文件夹,但不保存子文件夹
- 20. 的.htaccess密码保护的文件和
- 21. 只使用.htaccess密码保护文件夹中的一个文件
- 22. php目录密码保护
- 23. Nginx - 密码保护目录
- 24. 如何列出iPhone SDK中的所有文件夹及其子目录/文件?
- 25. 使用htaccess将子目录/子目录重定向到其他文件夹
- 26. 安全的目录密码保护没有.htaccess
- 27. 密码保护所有子域名
- 28. .htaccess密码保护的文件夹转到404页
- 29. .htaccess保护目录
- 30. .htaccess - 在一个文件夹中的密码,除了所有的子文件夹
所以我将'.htaccess'文件和'.htpasswd'文件放在sudomain的目录中?或者我把'.htpasswd'文件放在我想要保护的目录和子域目录中的'.htaccess'中? – Odyss3us 2011-03-08 08:43:57
@ user270311您需要将.htaccess放在您需要保护的目录中。所以这里在子域的目录中。和.htpasswd在具有适当权限的任何地方,在AuthUserFile – Mahesh 2011-03-08 11:42:22
中指定适当的权限我将以不同的方式制定:将.htpasswd放入不以任何方式暴露给Web的目录(受保护或不受保护),但对Apache可用。 – 2014-05-14 18:48:15