我想密码保护目录,并在其中应该密码保护的目录中的两个文件:
.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,但无论我尝试什么样的密码,它永远是错的。 它立刻输入密码问了!
什么是错的这个配置?
这个问题几乎总是因为Apache无法读取htpasswd文件。 有四个原因浮现在脑海中:
这是不正确解析路径...你如何创建.htaccess文件? 是否有Unix的行结束(与说在Windows中使用记事本?
是的路径是否正确? 什么是下面的命令(与路径更新)说明了什么? ls -l命令/var/www/html/path/to/my/directory/.htpasswd
没有Web服务器可以访问文件? CHMOD 644,看看是否能解决问题。
它不能解析htpasswd文件:在这种情况下,您使用的是的crypt()加密所以它似乎创建Linux上的文件,它可能是罚款。 某些类型的加密仅在特定平台上工作,如果有疑问,请尝试切换为MD5。
您可能会发现在Apache的错误日志中有用信息。
我的钱是在#3。
我只好用甲基苯丙胺类似的问题,这是因为我是用手工制作htpasswd的。 解决方案是使用htpasswd
在终端的命令:
htpasswd -bc .htpasswd someuser somepass
这创造与看起来像,所以我的.htaccess文件工作得很好的htpasswd文件:
AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
还有就是你从父文件夹,而不是你所期望的文件夹中看到密码保护的可能性很小。
如果你的/ etc /启用站点-的Apache2 /文件夹中有只有一个文件,检查,看它是否有一节为你的站点文件夹,是这样的:
<Directory /var/www/mysite.com>
AllowOverride All
</Directory>
否则,如果它为您的网站名称的文件,如:
/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf
编辑该文件,而不是,并确保有一个
AllowOverride All
在那里。 这是最重要的部分! 如果你想只允许最小,指定:
AllowOverride AuthConfig
代替。
我有同样的问题。 原来的问题是这一行:
需要用户管理
如果指定admin
,你只能访问目录admin
,即使你有在其他用户.htpasswd
文件。
如果你想在指定的用户.htpasswd
文件,您可以更改行:
需要有效的用户
我的问题是,我没有给该AuthFile线的绝对路径。
我遇到过同样的问题。
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 也可用。
如果仍然无法正常工作,照顾这些:
- 使用UNIX换行符
- 使用正确的AuthUserFile的路径,你可以得到它使用:
echo $_SERVER['DOCUMENT_ROOT'];
- 集合文件可读:
chmod(".htpasswd",0644);
我花了约2小时,以解决同一个问题。 但问题是,在nginx的。 我有nginx的是前面的Web服务器并有用于代理配置的线:
proxy_set_header授权 “”;
它覆盖授权领域和Apache没有收到用户名和密码在输入。
我只是注释掉这行,它的工作。