Подтвердить что ты не робот

.htaccess/.htpasswd 500 Внутренняя ошибка сервера

Я работаю над блокировкой папки с .htaccess, которой я никогда раньше не пользовался, и у меня проблемы. Вот что я имею

.htaccess(находится в папке, которую я хочу заблокировать):

AuthName "Username and password required"
AuthUserFile /.htpasswd 
Require valid-user
AuthType Basic

.htpasswd(находится в корне, пароль зашифрован в фактическом файле):

   tim:blah

Я получаю 500 ошибок внутреннего сервера с этим, и я не могу понять, почему.

4b9b3361

Ответ 1

Скорее всего, проблема в этой строке:

AuthUserFile /.htpasswd 

Эта строка должна обеспечивать полный путь файловой системы к файлу пароля, например.

AuthUserFile /var/www/.htpasswd 

Чтобы обнаружить путь к файловой системе, вы можете создать документ PHP, содержащий

echo $_SERVER['DOCUMENT_ROOT'];

Ответ 2

Если ничего не помогло, и вы используете 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!');
    }
}

Ответ 3

Разрешения также могут вызвать эту проблему.

Убедитесь, что .htpasswd читается пользователем веб-сервера.

Например, если вы используете nginx, проверьте nginx.conf, чтобы узнать, что такое пользователь сервера, если вы используете Apache, вы можете найти его таким образом, и др.

Затем установите правильные владельцы и разрешения на чтение .htpasswd

Ответ 4

Я бы также добавил, что некоторые из некоторых веб-узлов, файл .htpasswd не будут работать, если они будут размещены в общедоступной области. Недавняя установка, которую я подтвердила, подтвердила это. Как отмечали другие, лучше всего разместить это в корне сайта.

Ответ 5

Была такая же проблема, это было связано с доступом! Передали ли вы право владения файлом пароля пользователю www-data через

chown www-data /var/www/.htpasswd
chmod 640 /var/www/.htpasswd

? По понятным причинам лучше хранить пароль, чтобы он оставался где-то за пределами каталога /var/www/, скажем, /home/MYSERVER/ в таком случае вам также необходимо передать право владения этим родительским каталогом пользователю www-data