Назад | Перейти на главную страницу

HTTP-аутентификация игнорируется как в .htaccess, так и в httpd.conf

Недавно я обнаружил, что некоторые веб-сайты разработки на моем локальном компьютере (Windows 10 / Apache 2.4) видны из Интернета, хотя этого быть не должно. проблема похожа на этот вопрос, но поскольку никаких решений там не было (все вопросы, заданные в этом посте, были проверены и подтверждены на правильность), я задаю свой вопрос. Вот соответствующие выдержки из соответствующих файлов:

httpd.conf:

# directory and file names obfuscated intentionally
<Directory "P:/HTTP/{hidden}"> 
  AllowOverride All
  AuthType Basic
  AuthName "Private Content - Authorized Use Only"
  AuthUserFile P:/.htpasswd
  Require valid-user
</Directory>

.htaccess (в P: / http / {скрытый})

  AuthType Basic
  AuthName "You must log in to view this site."
  AuthUserFile P:/.htpasswd
  Require valid-user

(примечание: записи AuthName устанавливаются по-разному для каждой, чтобы облегчить отладку)

Я знаю, что файл .htaccess обрабатывается, потому что, если я добавлю строку, которая вызовет ошибку, указанная ошибка возникает, но когда ошибки не возникает, мне все равно не предоставляется логин для аутентификации HTTP. Сайт просто появляется. Это происходит с каждого компьютера, с которого я пытаюсь получить доступ к сайту, а не только с моей локальной машины. в моих файлах журнала нет записей об ошибках (за исключением преднамеренных ошибок HTTP 500, которые были сгенерированы из строки мусора в .htaccess), AllowOverride установлен на ALL, как видно из моего отрывка выше, и в Apache не было последних изменений с тех пор, как я в последний раз проводил тест безопасности около 2 месяцев назад. Единственное изменение в системе связано с обновлениями Windows, но это не должно иметь никакого отношения к этой проблеме.

Интересно то, что на этом же компьютере у меня есть несколько виртуальных машин, все с разными версиями OS / Apache, и все они указывают на один и тот же корень документа (общий ресурс SAMBA в локальном ящике), и все они похожи (или идентичны) записи в соответствующих файлах конфигурации Apache и они все работают. Эта проблема возникает только на хост-машине Win10.

Любые предложения или подсказки будут с благодарностью приняты.

Вот как мой .htaccess файл выглядит (Apache 2.2)

AuthName "FBI only"
AuthUserFile /etc/apache2/htpasswd-mysite
AuthType basic
Require valid-user
Order Deny,Allow
Deny from all
Allow from Ip.addr.here
Satisfy Any

Когда доступ к моему сайту осуществляется с Ip.addr.here тогда пароль не требуется.

В файле конфигурации apache у меня есть

<Directory "/var/www/vhosts/site/www">
     Options            Indexes FollowSymLinks
     AllowOverride      All
     Order              allow,deny
     Allow              from all
</Directory>

Итак, попробуйте добавить в файл htaccess эти строки

Order Deny,Allow
Deny from all

редактировать

Посмотри пожалуйстаhttp://www.the-art-of-web.com/system/apache-authorization/

По этой ссылке:

Если вы обновляете сервер с помощью устаревших директив авторизации, вы можете заставить их работать быстро, включив (он должен быть активирован по умолчанию) mod_access_compat в Apache: sudo a2enmod access_compat

В вашем случае посмотрите, включен ли у вас этот модуль.

Вот полезная информация. https://www.digitalocean.com/community/tutorials/migrating-your-apache-configuration-from-2-2-to-2-4-syntax

Редактировать 2

См. Этот соответствующий вопрос И проверьте файл журнала apache!

Выполнив все предложенные предложения (спасибо всем за эти предложения), ответив на вопросы, размещенные здесь и в других местах, и в целом вырвав в отчаянии больше волос, чем я могу позволить себе потерять, я Ну наконец то нашел причину проблемы, а значит, и решение. Оказалось, что в родительской папке был другой файл .htaccess, который разрешал доступ ко всем дочерним папкам, и этот «восходящий» файл .htaccess переопределял настройки в файле, в котором я пытался внести изменения. Это кажется странным для меня, но комментирование настроек в предке .htaccess заставило другой файл начать работать по назначению.

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