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

Htaccess не работает - всегда неправильный пароль

Я пытаюсь защитить паролем каталог и имею два файла в каталоге, которые должны защитить его паролем:

  • .htaccess
  • .htpasswd

HTAccess:

###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin

Htpasswd:

###Contents of .htpasswd
admin:oxRHPuqwKiANY

Пароль также является администратором, но независимо от того, какой пароль я пытаюсь сделать, это всегда неправильно. Он сразу же запросит пароль снова!

Что не так с этой конфигурацией?

4b9b3361

Ответ 1

Эта проблема почти всегда, потому что apache не может прочитать файл .htpasswd. На ум приходят четыре причины:

  • он не правильно разбирает путь... как вы создали файл .htaccess? Имеет ли он окончание строк в Unix (по сравнению с использованием Notepad в Windows?

  • правильный путь? Что показывает следующая команда (с обновлением пути)? ls -l/var/www/html/path/to/my/directory/.htpasswd

  • Доступен ли веб-сервер к файлу? chmod 644 и посмотреть, разрешает ли это проблема.

  • он не может проанализировать файл .htpasswd: в этом случае вы используете шифрование crypt(), поэтому, похоже, вы создали файл в Linux, и, вероятно, это хорошо. Некоторые типы шифрования работают только на определенных платформах, если есть сомнения, попробуйте переключиться на MD5.

Вы можете найти полезные сообщения в журнале ошибок Apache.

Мои деньги на # 3.

Ответ 2

У меня была похожая проблема с использованием MAMP, и это потому, что я создавал .htpasswd вручную. Решением было использовать команду htpasswd в терминале:

htpasswd -bc .htpasswd someuser somepass

это создало файл .htpasswd, который отлично работал с моим файлом .htaccess, который выглядел так:

AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user

Ответ 3

Там небольшой шанс, что вы видите защиту паролем из родительской папки, а не папки, которую вы ожидаете.

Если ваша папка с поддержкой /etc/apache 2/sites имеет только один файл, проверьте, есть ли у нее раздел для папки ваших сайтов, например:

<Directory /var/www/mysite.com>
   AllowOverride All
</Directory> 

в противном случае, если у него есть файл для вашего имени сайта, например:

/etc/apache/sites-enabled/YOUR_SITE_NAME_HERE.conf

отредактируйте этот файл и убедитесь, что есть

AllowOverride All

. Это важная часть! Если вы хотите разрешить минимум, укажите:

AllowOverride AuthConfig

вместо.

Ответ 4

У меня была та же проблема. Оказалось, что проблема была в этой строке:

Требовать администратора пользователя

Если вы укажете admin, вы можете получить доступ только к каталогу с admin, даже если у вас есть другие пользователи в файле .htpasswd.

Если вы хотите указать пользователей в файле .htpasswd, вы можете изменить строку на:

Требовать действительного пользователя

Ответ 5

Моя проблема заключалась в том, что я не дал абсолютного пути для строки AuthFile.

Ответ 6

У меня была такая же проблема.

CRYPT_STD_DES - стандартный хэш на основе DES с солью из двух символов из алфавита "./0-9A-Za-z".

function standard_salt(){
$a = array_merge(range(0,9),range('a','z'),range('A','Z'));
return (string) $a[rand(0,count($a)-1)].$a[rand(0,count($a)-1)];
}

echo(crypt("admin",standard_salt()));

Пример:

admin:dsbU.we73eauE

Onlione javascript encripter также доступен.

Если он все еще не работает, позаботьтесь об этом:

  • используйте unix linebreaks
  • используйте правильный путь AuthUserFile, вы можете получить его, используя: echo $_SERVER['DOCUMENT_ROOT'];
  • установить файл для чтения: chmod(".htpasswd",0644);

Ответ 7

Кроме того, убедитесь, что ваш файл паролей закодирован в ANSI.

Ответ 8

Я потратил около 2 часов, чтобы решить ту же проблему. Но проблема была в nginx. У меня есть nginx как передний веб-сервер, и была строка для конфигурации прокси:

proxy_set_header Авторизация "";

Он отменяет поле авторизации, а apache не получает введенный пароль и пароль.

Я просто прокомментировал эту строку, и она сработала.

Ответ 9

использовать

htpasswd -b .htpasswd admin admin

использовать пароль из командной строки.