Вопрос: .htaccess не запрашивает пароль


Я использую Ubuntu 12.04 и пытаюсь использовать .htaccess на странице с сервером apache2. Мой файл .htaccess выглядит так:

AuthType Basic
AuthName "Password Required"
AuthBasicProvider file
AuthUserFile /home/janeb/.htpasswd
require valid-user

Файл /home/janeb/.htpasswd:

inb351:$apr1$Ya4tzYvr$KCs3eyK1O2/c7Q9zRcwn..

и / etc / apache2 / sites-available / default:

UserDir public_html
<Directory ~ "public_html/.*">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all  
</Directory>

Я перезапустил apache. Я попытался изменить require valid-user в require user inb351, Еще не повезло. Я также пробовал AllowOverride с AuthConfig а также AuthConfig Indexes, Поэтому я не знаю, что еще делать, и да, каждый шаг, который я попробовал, перезапустил apache.

Изменить: точный файл по умолчанию:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
    UserDir disabled vmuser
    UserDir public_html
<Directory ~ "public_html/*">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>


6
2017-09-14 09:14


Источник


Загружен ли модуль auth_basic? - Stone
Как это проверить? - Sarp Kaya
Просто включите его с помощью «a2enmod auth_basic», если он не был тогда, он включит его. - Stone
Модуль auth_basic уже включен - Sarp Kaya


Ответы:


Я подозреваю, что apache пользователь не способен читать /home/janeb/.htpasswd, Проверьте журнал ошибок Apache.

Это единственное, что я вижу неправильно в конфигурации, которая предоставляется, но это может быть не единственная проблема; укажите полную конфигурацию виртуального хоста. Я также рекомендую вам переместить конфигурацию аутентификации из .htaccess файл - нет причин для его присутствия.

РЕДАКТИРОВАТЬ:

Причина, по которой .htaccess файл не применяется, потому что AllowOverride All не применяется к пути, на котором .htaccess файл.

.htaccess файл необходимо применять одновременно с <Directory> блоков - если AllowOverride указывается в <Directory ~ ...> блок, тогда это случается после  .htaccess должны были применяться. Поскольку это не работает, документация специально предупреждает об этом:

AllowOverride действителен только в <Directory> разделы, заданные без регулярных выражений, а не в <Location>, <DirectoryMatch> или <Files> разделы.

Добавьте новый блок в свою конфигурацию, чтобы .htaccess файлы, которые необходимо использовать:

<Directory /home>
    AllowOverride All
</Directory>

8
2017-09-15 08:03



Я действительно узнал, что у меня есть сообщение об ошибке: [Mon Sep 17 19:20:16 2012] [ошибка] [клиент 127.0.0.1] клиент отказался от конфигурации сервера: /home/janeb/public_html/.htaccess Однако, Я получил это сообщение об ошибке, когда я действительно пытался получить доступ к нему в браузере, пытаясь войти локальный / ~ janeb / .htaccess Помимо этой ошибки, у меня есть только две из этих записей »[Mon Sep 17 19:18:40 2012] [уведомление] поймал SIGTERM, закрыв [Mon Sep 17 19:18:42 2012] [уведомление] Apache / 2.2. 22 (Ubuntu) настроено - возобновление обычных операций " - Sarp Kaya
@SarpKaya Итак, ваш DocumentRoot (или ссылки на Alias) является /home/janeb/public_html/? В вашем файле vhost нет ссылки на это местоположение; знаете ли вы, как это было настроено? Или вы получаете доступ к пути mod_userdir /~janeb? Вы можете проверить, как выглядят разрешения /home/janeb так же как /home/janeb/.htpasswd? - Shane Madden♦
да, я обращаюсь к нему через localhost / ~ janeb, htpasswd - 0644 - Sarp Kaya
@SarpKaya. Появляется ли запрос пароля при попытке доступа к странице? И какой код ответа делает ваш браузер, когда загрузка страницы не работает? Во всяком случае, давайте исключаем любую другую причину; попробуйте комментировать Require valid-user в вашей .htaccess и убедитесь, что запросы разрешены немедленно? - Shane Madden♦
Шейн. Это проблема. При попытке доступа к странице он не запрашивает пароль. Он просто загружает страницу вверх. А также я только что пробовал это, не работал. - Sarp Kaya


По внешнему виду вашей конфигурации вам, вероятно, нужно будет поместить файл .htaccess в /home/janeb/public_html каталог, который DocumentRoot если я не ошибаюсь.


3
2017-09-14 09:36



Просто попробовал этот метод. Не работал... - Sarp Kaya


Что вы пытаетесь сделать точно?

В вашей vhost декларация ...

order allow,deny
allow from all  

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

Вместо этого удалите этот код и в своем .htaccess все что тебе нужно это ...

AuthType Basic
AuthName "Password Required"
AuthUserFile /home/janeb/.htpasswd
Require valid-user

.htpasswd файл может находиться где угодно на сервере, пока его читает тот, кто работает Apache (как правило, www-data).

Если вы хотите объединить ограничения IP и .htpasswd ограничение, то вы также можете использовать ..

order deny,allow
deny from all
allow from 192.168.0.10

AuthType Basic
AuthName "Password Required"
AuthUserFile /home/janeb/.htpasswd
Require valid-user

Satisfy Any

2
2017-09-15 21:40



Привет, мне не нужны ограничения IP. Итак, я сделал то, что ты сказал мне, и избавился order allow,deny allow from all  часть, однако он все еще не спрашивает пароль ... - Sarp Kaya
Тогда в этом случае его либо .htpasswd не может быть прочитан тем, кто работает Apache (как я сказал выше), или что ваш vhost конфигурация сопоставляется в другой инструкции каталога. Измените все AllowOverride None в AllowOverride All - один за другим и перезапускать Apache между каждым изменением. Тогда вы увидите, где все пошло не так. - Ben Lessani - Sonassi
«это будет означать ваш следующий .htpasswd не имеет значения, поскольку он имеет приоритет ». Хм? Это было бы только с Satisfy Any set, который я не вижу нигде в предоставленной конфигурации. - Shane Madden♦
Теория так говорит, но я дал код тест на лабораторной машине, и он дает результаты, которые я описал. - Ben Lessani - Sonassi
sonassi, так как вы можете проверить, что это уже все для public_html ... - Sarp Kaya


Я здесь с той же проблемой. Оказывает public_html определение наследуется от верхнего уровня сервера (<Directory />), и он содержал AllowOverride None, Изменение этого параметра на All (или AuthConfig) сделал трюк.


0
2018-03-26 11:34