我正在尝试使用密码保护子域名及其所有子目录和文件,但我对此事的了解非常有限,我该怎么做呢?
这是一个简单的两步过程
在你的 .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,则应在安全部分配置“密码保护目录”
编辑:如果这不起作用,那么你可能需要 AllowOverride All 中对 .htaccess 目录(或至少对以前的目录) http.conf ,然后重新启动 apache
AllowOverride All
<Directory /path/to/the/directory/of/htaccess> Options Indexes FollowSymLinks MultiViews AllowOverride All </Directory>
那么我是否应该将 .htaccess 文件和 .htpasswd 文件都放在主域的目录中?或者我是否应该将 .htpasswd 文件放在我想要保护的目录中,而将 .htaccess 放在子域的目录中?
我将以不同的方式来表述:将 .htpasswd 放入一个不会以任何方式暴露给网络(无论是否受保护)但可供 apache 使用的目录中。
我输入了错误的密码。现在每次我重新加载时都会返回:内部服务器错误。我看不到用户名密码输入选项。即使我的网站无法正常工作,它也会返回内部服务器错误。@Mahesh
只需扩展 Mahesh 的回答。
.htaccess
如果您不想使用在线密码生成器,您可以使用 htpasswd 或 openssl :
htpasswd
openssl
htpasswd -c /path/to/the/directory/you/are/protecting/.htpasswd my_username # then enter a password # -c means Create a new file
openssl passwd -apr1 your_password
然后将生成的密码输入到 .htpasswd 以下格式:
.htpasswd
username:<generated_password>
例子:
my_username:$apr1$ydbofBYx$6Zwbml/Poyb61IrWt6cxu0
请注意,htpasswd 文件不需要命名为 .htpasswd,也不需要位于您想要保护的文件夹中。为了安全起见,您可以将其放置在 http / httpdocs 文件夹之外,这样就无法通过 HTTP/S 访问它。例如 /var/www/private-files/password-list-for-protected-folder
要对 Apache 提供的目录进行密码保护,您需要在要保护的目录中放置一个 .htaccess 文件,并在系统上 Apache 用户可以访问的任何位置放置一个 .htpasswd 文件(但要将其放在合理且私密的位置)。您很可能不想将其放在 .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
AuthType Basic AuthName "Require Authentication" AuthUserFile [PATH_TO_FILE]/.htpasswd Require valid-user
p2
p3
p4
如果您有任何疑问,请告诉我。
You'd probably want to use the mod_auth_digest module. Apache has provided a very nice 指南, to using the full range of authentication and authorization modules.
mod_auth_digest
看看这个: \'此模块实现了 HTTP 摘要式身份验证 (RFC2617),并提供了 mod_auth_basic 的替代方案,其中密码不以明文形式传输。但是,这不会带来比基本身份验证更大的安全优势。另一方面,使用摘要式身份验证在服务器上存储密码的安全性远低于使用基本身份验证。因此,使用基本身份验证并使用 mod_ssl 加密整个连接是一个更好的选择。\'