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