htaccess的不工作 - 总是错误的密码(htaccess doesn't work -

2019-06-23 09:23发布

我想密码保护目录,并在其中应该密码保护的目录中的两个文件:

  • 的.htaccess
  • htpasswd的

.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,但无论我尝试什么样的密码,它永远是错的。 它立刻输入密码问了!

什么是错的这个配置?

Answer 1:

这个问题几乎总是因为Apache无法读取htpasswd文件。 有四个原因浮现在脑海中:

  1. 这是不正确解析路径...你如何创建.htaccess文件? 是否有Unix的行结束(与说在Windows中使用记事本?

  2. 是的路径是否正确? 什么是下面的命令(与路径更新)说明了什么? ls -l命令/var/www/html/path/to/my/directory/.htpasswd

  3. 没有Web服务器可以访问文件? CHMOD 644,看看是否能解决问题。

  4. 它不能解析htpasswd文件:在这种情况下,您使用的是的crypt()加密所以它似乎创建Linux上的文件,它可能是罚款。 某些类型的加密仅在特定平台上工作,如果有疑问,请尝试切换为MD5。

您可能会发现在Apache的错误日志中有用信息。

我的钱是在#3。



Answer 2:

我只好用甲基苯丙胺类似的问题,这是因为我是用手工制作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


Answer 3:

还有就是你从父文件夹,而不是你所期望的文件夹中看到密码保护的可能性很小。

如果你的/ etc /启用站点-的Apache2 /文件夹中有只有一个文件,检查,看它是否有一节为你的站点文件夹,是这样的:

<Directory /var/www/mysite.com>
   AllowOverride All
</Directory> 

否则,如果它为您的网站名称的文件,如:

/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf

编辑该文件,而不是,并确保有一个

AllowOverride All

在那里。 这是最重要的部分! 如果你想只允许最小,指定:

AllowOverride AuthConfig

代替。



Answer 4:

我有同样的问题。 原来的问题是这一行:

需要用户管理

如果指定admin ,你只能访问目录admin ,即使你有在其他用户.htpasswd文件。

如果你想在指定的用户.htpasswd文件,您可以更改行:

需要有效的用户



Answer 5:

我的问题是,我没有给该AuthFile线的绝对路径。



Answer 6:

我遇到过同样的问题。

  • 密码应具有特定的加密:

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);


Answer 7:

此外,请确保您的密码文件ANSI编码。



Answer 8:

我花了约2小时,以解决同一个问题。 但问题是,在nginx的。 我有nginx的是前面的Web服务器并有用于代理配置的线:

proxy_set_header授权 “”;

它覆盖授权领域和Apache没有收到用户名和密码在输入。

我只是注释掉这行,它的工作。



文章来源: htaccess doesn't work - always wrong password