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

Lea*_*ley 15 .htaccess .htpasswd

希望有人能够帮助解决这个问题!我一直在谷歌搜索超过2个小时,我尝试的任何东西都在工作......

我想密码保护我的网站,但是当我添加.htpasswd和.htaccess文件时,我收到服务器错误:

内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求.请与服务器管理员联系,告知他们错误发生的时间,以及可能导致错误的任何操作.服务器错误日志中可能提供了有关此错误的更多信息.

这是我正在使用的代码:

的.htaccess

AuthType Basic  
AuthName "Top Secret for SongKick eyes only."  
AuthUserFile /webroot/.htpasswd  
require valid-user
Run Code Online (Sandbox Code Playgroud)

htpasswd的

songkick:isS1rCTQE/p8E
Run Code Online (Sandbox Code Playgroud)

我也尝试过AuthUserFile /.htpasswd(即没有"webroot",这是它在文件管理器中的文件夹的名称),但这也不起作用.

我正在使用GoDaddy托管btw,如果这有所不同.

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

Ola*_*che 31

根据AuthUserFile,您必须提供密码文件的完整路径,而不是相对路径DocumentRoot,如果它是绝对路径(即以斜杠开头).

AuthUserFile指令设置文本文件的名称,该文件包含用户身份验证的用户和密码列表.文件路径是用户文件的路径.如果它不是绝对的,则将其视为相对于ServerRoot.

请注意,ServerRoot不是DocumentRoot.

如果DocumentRoot/var/www和密码文件/var/www/webroot/.htpasswd,你必须说

AuthUserFile /var/www/webroot/.htpasswd
Run Code Online (Sandbox Code Playgroud)

在.htaccess文件中.


您可以通过一个小的PHP脚本找到有关绝对路径的信息,例如

<?php
echo "Absolute path: ", getcwd();
Run Code Online (Sandbox Code Playgroud)

将它放在要查找.htpasswd文件的目录中,然后调用它 http://www.example.com/path/to/test.php

完成后不要忘记删除脚本.


说,你不应该把你的密码文件放在你的任何地方DocumentRoot.最好将它放在某些无法通过网络访问的地方,即/etc/apache2/htpasswd适合您的地方.

  • 要添加:完整路径与FTP路径不同.您的FTP可以显示`12.34.567.89/ <root>`,而实际路径可能是`/ var/www/domain.com`.这可以在控制面板(如果存在)中找到,也可以通过错误日志(如果可访问)找到. (3认同)

Jak*_*uld 4

我想到两件事。

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

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

  • 嘿,杰克,啊,我实际上不知道这两件事是什么意思。我将采取哪些步骤来找出这些问题? (2认同)