tes*_*ing 27 .htaccess login password-protection .htpasswd
我正在尝试密码保护目录,并在目录中有两个文件应该密码保护它:
.htaccess中:
###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin
Run Code Online (Sandbox Code Playgroud)
HTPASSWD:
###Contents of .htpasswd
admin:oxRHPuqwKiANY
Run Code Online (Sandbox Code Playgroud)
密码也是管理员,但无论我尝试什么密码,总是错误的.它立即再次要求输入密码!
这个配置有什么问题?
小智 28
这个问题几乎总是因为apache无法读取.htpasswd文件.有四个原因可以想到:
它没有正确解析路径...你是如何创建.htaccess文件的?它是否具有unix行结尾(而不是在Windows中使用记事本?
路径是否正确?以下命令(带路径更新)显示了什么?ls -l /var/www/html/path/to/my/directory/.htpasswd
Web服务器是否可以访问该文件?chmod 644,看看是否能解决问题.
它无法解析.htpasswd文件:在这种情况下,您正在使用crypt()加密,因此您似乎在Linux上创建了该文件,它可能很好.某些类型的加密仅适用于某些平台,如果有疑问,请尝试切换到MD5.
您可以在Apache错误日志中找到有用的消息.
我的钱在#3上.
sid*_*rcy 21
我有一个类似的问题使用MAMP,这是因为我手动创建.htpasswd.解决方案是htpasswd在终端中使用命令:
htpasswd -bc .htpasswd someuser somepass
Run Code Online (Sandbox Code Playgroud)
这创建了.htpasswd文件,它与我的.htaccess文件工作正常,看起来像这样:
AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
Run Code Online (Sandbox Code Playgroud)
您从父文件夹中看到密码保护的可能性很小,而不是您期望的文件夹.
如果您的/ etc/apache2/sites-enabled文件夹中只有一个文件,请检查它是否有您的sites文件夹的部分,例如:
<Directory /var/www/mysite.com>
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
否则,如果它有一个您的站点名称的文件,例如:
/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf
编辑该文件,并确保有一个
AllowOverride All
Run Code Online (Sandbox Code Playgroud)
在那里.那是重要的部分!如果您只想允许最小值,请指定:
AllowOverride AuthConfig
Run Code Online (Sandbox Code Playgroud)
代替.