希望有人能够帮助解决这个问题!我一直在谷歌搜索超过2个小时,我尝试的任何工作都没有...
我想密码保护我的网站,但是一旦我添加.htpasswd和.htaccess文件,我就会收到服务器错误:
内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请与服务器管理员联系,告知他们错误发生的时间,以及可能导致错误的任何操作。 服务器错误日志中可能提供了有关此错误的更多信息。
以下是我正在使用的代码:
的.htaccess
AuthType Basic
AuthName "Top Secret for SongKick eyes only."
AuthUserFile /webroot/.htpasswd
require valid-user
htpasswd的
songkick:isS1rCTQE/p8E
我也尝试过AuthUserFile /.htpasswd(即没有“webroot”,这是它在文件管理器中的文件夹的名称),但这也不起作用。
我正在使用GoDaddy托管btw,如果这有所不同。
非常感谢任何帮助 - 我不是开发人员所以不理解许多帮助文章中使用的很多术语!
答案 0 :(得分:29)
根据AuthUserFile
,您必须提供密码文件的完整路径,而不是DocumentRoot
的相对路径,如果它是绝对的(即以斜杠开头)。
AuthUserFile指令设置文本文件的名称,该文件包含用户身份验证的用户和密码列表。文件路径是用户文件的路径。如果它不是绝对的,则将其视为相对于 ServerRoot 。
请注意,ServerRoot
不是DocumentRoot
。
如果DocumentRoot
为/var/www
而密码文件为/var/www/webroot/.htpasswd
,则必须说明
AuthUserFile /var/www/webroot/.htpasswd
在.htaccess文件中。
您可以通过一个小的PHP脚本找到有关绝对路径的信息,例如
<?php
echo "Absolute path: ", getcwd();
将其放在要查找.htpasswd文件的目录中,并使用http://www.example.com/path/to/test.php
完成后不要忘记删除脚本。
说,您不应该将密码文件放在DocumentRoot
的任何地方。最好将它放在无法通过网络访问的某个地方,即/etc/apache2/htpasswd
或适合您的任何地方。
答案 1 :(得分:4)
有两件事情浮现在脑海中。
Web服务器用户可以读取.htpasswd
吗?
您知道Apache是否设置了AllowOverride all
以允许.htaccess
按预期运行吗?
答案 2 :(得分:2)
此错误的主要原因是“AuthUserFile”路径。我遇到了同样的问题,我通过进入cpanel解决了这个问题。通过在cPanel中保护您的文件夹,它会自动检测htpasswd文件。
转到cPanel-&gt;密码保护目录 - &gt;定义目录,然后创建用户。希望这能帮助你。
答案 3 :(得分:1)
所有标准答案(完整路径,正确格式等)都不适用于我。经过大量的追踪后,我发现父文件夹的权限不足,所以即使.htaccess中的路径是正确的,文件的权限是rw-rr,仍然没有去,因为父文件是rwx-rw- - 。在限制访问上游文件夹的主机上追踪可能很难。