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

wkyowqbh  于 2023-02-05  发布在  其他
关注(0)|答案(5)|浏览(144)

我想密码保护我的网站,但只要我添加在. 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托管,如果这有什么不同的话。

6ojccjat

6ojccjat1#

根据AuthUserFile,必须提供密码文件的完整路径,而不是DocumentRoot的相对路径,如果它是绝对路径(即以斜杠开头)。
AuthUserFile指令设置文本文件的名称,该文件包含用于用户验证的用户和口令列表。File-path是用户文件的路径。如果不是绝对路径,则将其视为相对于 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或任何适合你的地方。

mwg9r5ms

mwg9r5ms2#

我想到两件事。

  1. .htpasswd是否可由web服务器用户读取?
    1.您知道Apache是否设置了AllowOverride all以允许.htaccess按预期运行吗?
pvcm50d1

pvcm50d13#

所有的标准答案(完整路径,正确格式等)对我不起作用。经过大量的跟踪后,我发现父文件夹的权限不足,所以即使.htaccess中的路径是正确的,文件的权限是rw-r-r,仍然没有去,因为父文件夹是rwx-rw--。这可能是很坚韧跟踪一个限制访问上游文件夹的主机。

ajsxfq5m

ajsxfq5m4#

这个错误的主要原因是“AuthUserFile”路径。我遇到了同样的问题,我通过进入cpanel解决了它。通过保护cPanel中的文件夹,它会自动检测htpasswd文件。
进入cPanel-〉密码保护目录-〉定义目录然后创建一个用户。希望这对你有帮助。

f87krz0w

f87krz0w5#

APache有一个错误,报告如下:https://bz.apache.org/bugzilla/show_bug.cgi?id=54735
您必须按如下方式设置密码:

htpasswd -nb username newpassw > <path-to>/htpasswd

这里有类似的问题:Apache 2.4“..身份验证失败..:密码不匹配”

相关问题