.htaccess/.htpasswd 500内部服务器错误

Tim*_*ych 45 apache .htaccess

我正在使用.htaccess阻止一个文件夹,这是我以前从未使用过的,我遇到了一些麻烦.这就是我所拥有的

.htaccess(位于我想要阻止的文件夹中):

AuthName "Username and password required"
AuthUserFile /.htpasswd 
Require valid-user
AuthType Basic
Run Code Online (Sandbox Code Playgroud)

.htpasswd(位于root,密码在实际文件中加密):

   tim:blah
Run Code Online (Sandbox Code Playgroud)

我有500个内部服务器错误,我无法弄清楚原因.

anu*_*ava 119

最可能的问题是这一行:

AuthUserFile /.htpasswd 
Run Code Online (Sandbox Code Playgroud)

该行应提供密码文件的完整文件系统路径,例如

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

要发现文件系统路径,可以创建包含的PHP文档

echo $_SERVER['DOCUMENT_ROOT'];

  • 找到了家乡的道路.我的主人隐瞒了我的重要信息.谢谢. (4认同)
  • 还要确保`.htpasswd`不能被组和其他人写入. (3认同)
  • 谢谢!在我的情况下`echo getcwd();`让我得到(错误的)相对路径.`echo $ _SERVER ['DOCUMENT_ROOT'];`效果很好! (3认同)
  • 好的,这可行:我打开了身份验证窗口并登录,但是随后出现内部服务器错误。所以我用绝对路径解决了。但是,记录下来,这太糟糕了!我不能再将此文件放入`git`仓库中了,因为我不能使用相对路径。谢谢奥巴马,谢谢特朗普!(放松,有点政治幽默:) (2认同)

Arn*_*rne 7

如果没有任何帮助并且您正在使用PHP,那么可以通过将它放在index.php(顶部)中来使其工作:

if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    if ($_SERVER['PHP_AUTH_USER'] != 'user' || 
        $_SERVER['PHP_AUTH_PW'] != 'pass') {

        header('WWW-Authenticate: Basic realm="Protected area"');
        header('HTTP/1.0 401 Unauthorized');

        die('Login failed!');
    }
}
Run Code Online (Sandbox Code Playgroud)