我正在尝试密码保护目录,并且目录中有两个文件应该用密码保护它:
htaccess的:
###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin
HTPASSWD:
###Contents of .htpasswd
admin:oxRHPuqwKiANY
密码也是admin,但无论我尝试使用什么密码,都是错误的。它会立即再次要求输入密码!
此配置有什么问题?
答案 0 :(得分:27)
这个问题几乎总是因为apache无法读取.htpasswd文件。我想到了四个原因:
它没有正确解析路径...你是如何创建.htaccess文件的?它是否具有unix行结尾(而不是在Windows中使用记事本?
路径是否正确?以下命令(带路径更新)显示了什么? ls -l /var/www/html/path/to/my/directory/.htpasswd
Web服务器是否可以访问该文件? chmod 644,看看是否能解决问题。
它无法解析.htpasswd文件:在这种情况下,您正在使用crypt()加密,因此您似乎在Linux上创建了该文件,它可能很好。某些类型的加密仅适用于某些平台,如果有疑问,请尝试切换到MD5。
您可以在Apache错误日志中找到有用的消息。
我的钱在#3上。
答案 1 :(得分:16)
我有一个类似的问题使用MAMP,这是因为我手动创建.htpasswd。解决方案是在终端中使用htpasswd
命令:
htpasswd -bc .htpasswd someuser somepass
这创建了.htpasswd文件,该文件在我的.htaccess文件中工作正常,如下所示:
AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
答案 2 :(得分:5)
您从父文件夹中看到密码保护的可能性很小,而不是您期望的文件夹。
如果您的/ etc / apache2 / sites-enabled文件夹中只有一个文件,请检查它是否有您网站文件夹的部分,如:
<Directory /var/www/mysite.com>
AllowOverride All
</Directory>
否则,如果它有一个您网站名称的文件,例如:
/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf
改为编辑该文件,并确保有
AllowOverride All
在那里。那是重要的部分!如果您只想允许最小值,请指定:
AllowOverride AuthConfig
代替。
答案 3 :(得分:2)
我遇到了同样的问题。原来问题是这一行:
要求用户管理
如果指定admin
,即使admin
文件中有其他用户,您也只能使用.htpasswd
访问该目录。
如果要在.htpasswd
文件中指定用户,可以将行更改为:
需要有效用户
答案 4 :(得分:1)
我的问题是我没有为AuthFile行提供绝对路径。
答案 5 :(得分:0)
我遇到了同样的问题。
CRYPT_STD_DES - 标准的基于DES的哈希,带有字母“./0-9A-Za-z”中的两个字符的盐。
function standard_salt(){
$a = array_merge(range(0,9),range('a','z'),range('A','Z'));
return (string) $a[rand(0,count($a)-1)].$a[rand(0,count($a)-1)];
}
echo(crypt("admin",standard_salt()));
示例:
admin:dsbU.we73eauE
Onlione javascript encripter is also available.
如果仍然无效,请注意以下事项:
echo $_SERVER['DOCUMENT_ROOT'];
chmod(".htpasswd",0644);
答案 6 :(得分:0)
另外,请确保您的密码文件是ANSI编码的。
答案 7 :(得分:0)
我花了大约2个小时来解决同样的问题。但问题在于nginx。 我有nginx作为前端Web服务器,并且有一行代理配置:
proxy_set_header授权&#34;&#34;;
它会覆盖授权字段,并且apache不会输入登录名和密码。
我刚评论了这一行,但它确实有效。
答案 8 :(得分:0)
使用
htpasswd -b .htpasswd admin admin
从命令行使用密码。