.htpasswd和.htaccess - 内部服务器错误

时间:2013-03-18 11:56:18

标签: .htaccess .htpasswd

希望有人能够帮助解决这个问题!我一直在谷歌搜索超过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,如果这有所不同。

非常感谢任何帮助 - 我不是开发人员所以不理解许多帮助文章中使用的很多术语!

4 个答案:

答案 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)

有两件事情浮现在脑海中。

  1. Web服务器用户可以读取.htpasswd吗?

  2. 您知道Apache是​​否设置了AllowOverride all以允许.htaccess按预期运行吗?

答案 2 :(得分:2)

此错误的主要原因是“AuthUserFile”路径。我遇到了同样的问题,我通过进入cpanel解决了这个问题。通过在cPanel中保护您的文件夹,它会自动检测htpasswd文件。

转到cPanel-&gt;密码保护目录 - &gt;定义目录,然后创建用户。希望这能帮助你。

答案 3 :(得分:1)

所有标准答案(完整路径,正确格式等)都不适用于我。经过大量的追踪后,我发现父文件夹的权限不足,所以即使.htaccess中的路径是正确的,文件的权限是rw-rr,仍然没有去,因为父文件是rwx-rw- - 。在限制访问上游文件夹的主机上追踪可能很难。