我想密码保护我的网站,但只要我添加在. 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托管,如果这有什么不同的话。
5条答案
按热度按时间6ojccjat1#
根据
AuthUserFile
,必须提供密码文件的完整路径,而不是DocumentRoot
的相对路径,如果它是绝对路径(即以斜杠开头)。AuthUserFile指令设置文本文件的名称,该文件包含用于用户验证的用户和口令列表。File-path是用户文件的路径。如果不是绝对路径,则将其视为相对于 ServerRoot 的路径。
请注意,
ServerRoot
不是DocumentRoot
。如果
DocumentRoot
为/var/www
,口令文件为/var/www/webroot/.htpasswd
,则必须输入在.htaccess文件中。
你可以用一个小的PHP脚本找到绝对路径,例如:
将其放入您希望找到.htpasswd文件的目录中,并使用
http://www.example.com/path/to/test.php
调用它完成后,不要忘记删除脚本。
也就是说,你不应该把你的密码文件放在你的
DocumentRoot
中任何可以访问的地方。最好把它放在一些不能从网络访问的地方,例如/etc/apache2/htpasswd
或任何适合你的地方。mwg9r5ms2#
我想到两件事。
.htpasswd
是否可由web服务器用户读取?1.您知道Apache是否设置了
AllowOverride all
以允许.htaccess
按预期运行吗?pvcm50d13#
所有的标准答案(完整路径,正确格式等)对我不起作用。经过大量的跟踪后,我发现父文件夹的权限不足,所以即使.htaccess中的路径是正确的,文件的权限是rw-r-r,仍然没有去,因为父文件夹是rwx-rw--。这可能是很坚韧跟踪一个限制访问上游文件夹的主机。
ajsxfq5m4#
这个错误的主要原因是“AuthUserFile”路径。我遇到了同样的问题,我通过进入cpanel解决了它。通过保护cPanel中的文件夹,它会自动检测htpasswd文件。
进入cPanel-〉密码保护目录-〉定义目录然后创建一个用户。希望这对你有帮助。
f87krz0w5#
APache有一个错误,报告如下:https://bz.apache.org/bugzilla/show_bug.cgi?id=54735
您必须按如下方式设置密码:
这里有类似的问题:Apache 2.4“..身份验证失败..:密码不匹配”