.htaccess 中的密码保护不要求输入密码
Password protection in .htaccess doesn't ask for password
我正在尝试用密码保护一个名为 'test' 的目录。
这是我到目前为止所做的(在测试目录内)
文件 .htpasswd:
testuser:$apr1$qw60eHhxS4S2Mxx/26EgXqmb7Pw1
文件 .htaccess
<files /var/www/html/test>
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
</files>
当我在浏览器中调用目录时,它不要求输入密码。我错过了什么吗?这可能是什么原因?
我刚刚意识到您正在使用分布式配置文件(“.htaccess”)。像 <Files ...>...</Files>
或 <Directory ...>...</Directory>
这样的块没有多大意义。实际上,在 http 服务器的错误日志文件中记录了 和 指出的内容。这给我们留下了两个选择:
要么使用实际的 http 服务器的主机配置(如果可能,应始终首选):
DOCUMENT_ROOT /var/www/html/test
<Directory /var/www/html/test>
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
</Directory>
这有效,我用我自己的一个系统重新检查了。
或者使用分布式配置文件 (.htaccess),这意味着您需要首先使用 AllowOverride
指令在您的 http 服务器的主机配置中授予更改访问权限。 和 您需要在该文件夹 中离开没有任何意义的封闭块。所以实际的“.htaccess”样式文件应该是:
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
这两个文件都需要能够被 HTTP 服务器进程读取。而 .htpasswd
文件的文件权限需要精确,再次查看文档以获取详细信息。此外,我明确建议 不要 将此类文件存储在已发布的文档文件夹中,但 在 http 服务器查找要发布的文档的位置之外 。出于显而易见的原因...
一般性评论:您应该始终倾向于将此类规则放在 http 服务器主机配置中,而不是使用分布式配置文件 (".htaccess")。那些分布式配置文件增加了复杂性,通常是意外行为的原因,难以调试并且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则(这是一个明显的安全噩梦)的应用程序的情况下作为最后的选择提供。
我正在尝试用密码保护一个名为 'test' 的目录。 这是我到目前为止所做的(在测试目录内)
文件 .htpasswd:
testuser:$apr1$qw60eHhxS4S2Mxx/26EgXqmb7Pw1
文件 .htaccess
<files /var/www/html/test>
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
</files>
当我在浏览器中调用目录时,它不要求输入密码。我错过了什么吗?这可能是什么原因?
我刚刚意识到您正在使用分布式配置文件(“.htaccess”)。像 <Files ...>...</Files>
或 <Directory ...>...</Directory>
这样的块没有多大意义。实际上,在 http 服务器的错误日志文件中记录了 和 指出的内容。这给我们留下了两个选择:
要么使用实际的 http 服务器的主机配置(如果可能,应始终首选):
DOCUMENT_ROOT /var/www/html/test
<Directory /var/www/html/test>
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
</Directory>
这有效,我用我自己的一个系统重新检查了。
或者使用分布式配置文件 (.htaccess),这意味着您需要首先使用 AllowOverride
指令在您的 http 服务器的主机配置中授予更改访问权限。 和 您需要在该文件夹 中离开没有任何意义的封闭块。所以实际的“.htaccess”样式文件应该是:
#Protect Directory
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /var/www/html/test/.htpasswd
Require valid-user
这两个文件都需要能够被 HTTP 服务器进程读取。而 .htpasswd
文件的文件权限需要精确,再次查看文档以获取详细信息。此外,我明确建议 不要 将此类文件存储在已发布的文档文件夹中,但 在 http 服务器查找要发布的文档的位置之外 。出于显而易见的原因...
一般性评论:您应该始终倾向于将此类规则放在 http 服务器主机配置中,而不是使用分布式配置文件 (".htaccess")。那些分布式配置文件增加了复杂性,通常是意外行为的原因,难以调试并且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则(这是一个明显的安全噩梦)的应用程序的情况下作为最后的选择提供。