.htaccess/.htpasswd 500 Внутренняя ошибка сервера
Я работаю над блокировкой папки с .htaccess, которой я никогда раньше не пользовался, и у меня проблемы. Вот что я имею
.htaccess(находится в папке, которую я хочу заблокировать):
AuthName "Username and password required"
AuthUserFile /.htpasswd
Require valid-user
AuthType Basic
.htpasswd(находится в корне, пароль зашифрован в фактическом файле):
tim:blah
Я получаю 500 ошибок внутреннего сервера с этим, и я не могу понять, почему.
Ответы
Ответ 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