Как удалить защиту паролем .htaccess из подкаталога

Весь мой веб-сайт защищен паролем с помощью .htaccess, но я хотел бы открыть один из подкаталогов, чтобы его можно было просматривать без пароля.

Как отключить парольную защиту htaccess для подкаталога? В частности, каков синтаксис .htaccess.

Вот мой .htaccess файл, который находится в корне моего ftp.

AuthName "Site Administratrion"
AuthUserFile /dir/.htpasswd
AuthGroupFile /dev/null

AuthName secure
AuthType Basic
require user username1
order allow,deny
allow from all

person justinl    schedule 16.09.2009    source источник
comment
Это может быть лучше подходит для сбоя сервера.   -  person beggs    schedule 16.09.2009


Ответы (6)


Вам необходимо создать новый файл .htaccess в требуемом каталоге и включить в него директиву Satisfy any, например, для Apache 2.3:

# allows any user to see this directory
Satisfy Any

Синтаксис изменен в Apache 2.4, он имеет тот же эффект:

Require all granted
person RageZ    schedule 16.09.2009
comment
Я мог заставить это работать только с Allow from all, а не с Satisfy Any. - person Jess Telford; 07.10.2011
comment
@JessTelford хорошее использование фрагмента кода. @RageZ +1 за ответ, который сработал для меня. Не могли бы вы отредактировать ответ, сделав его очень простым, и опубликовать его с помощью метода фрагмента кода. Иначе кому-то придется подумать thanks - person Jesse Burcsik; 13.02.2013
comment
@JessTelford Satisfy Any работает, и он был неправильно написан как Satisify Any. Может быть, поэтому у вас не сработало. - person BlueBird; 11.05.2014
comment
Мне нужно было, чтобы один файл был незащищенным (все остальное было защищено), то же самое в разделе ‹Files› - person Nick; 10.08.2014
comment
Это не работает для меня - я все еще получаю модальный пароль с запросом имени пользователя и pwd .. Использование firefox и Windows 7 ... Кто-нибудь знает? - person ItsMeDom; 03.11.2014
comment
@RageZ Спасибо! Оказывается, моя проблема заключалась только в том, что администратор сервера отключил переопределения htaccess, но это все еще полезно знать. - person dev_willis; 26.02.2015
comment
@dave kewl рад, что вы нашли глюк! - person RageZ; 27.02.2015
comment
@dave, спасибо за добавление синтаксиса 2.4. Это то, что мне нужно, чтобы переместить этот сайт в новый дом. - person Josiah; 10.07.2015
comment
@RageZ Я хочу разрешить один файл ветки без .htaccess, но проблема в том, что этот файл ветки также вызывает множество js и css, Итак, что в этом случае делать. - person Nullpointer; 18.02.2016
comment
Ни Satisfy Any, ни Require all selected не работают для меня на apache 2.2. - person matteo; 30.05.2018

Добавляя к ответу RageZ, я использовал это в директивах сервера:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Потрясающие. Спасибо RageZ!

person atonyc    schedule 21.08.2011

Просто создайте новый .htaccess в нужном подкаталоге с помощью этой директивы:

Allow from all

Вы можете ограничить свой IP только с помощью:

Allow from x.x.x.x

См .: http://httpd.apache.org/docs/current/mod/mod_access_compat.html

person Paul Rad    schedule 09.06.2014
comment
Это сработало, когда я поставил «Требовать все предоставлено» вместо «Разрешить от всех» и «Удовлетворить все». Эти двое не работали для меня. Я использую Apache 2.4. - person endo64; 06.10.2016

Вот способ разрешить подкаталог "foo" через базовую аутентификацию из основного файла .htaccess на сайте:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Примечание. Это работает в Apache 2.4. Я не подтверждал более ранних версий.

person PeterA    schedule 18.12.2018

Вам нужно добавить еще один файл .htaccess в подкаталог, который отменяет аутентификацию. .htaccess каскадно перемещается вверх, то есть он будет искать в текущей папке, затем подниматься на уровень выше и так далее.

person Fenton    schedule 16.09.2009
comment
вы знаете синтаксис? Я понимаю концепцию, но не знаю, как ее реализовать. - person justinl; 16.09.2009
comment
Если вы хотите удалить текущий и не использовать никаких разрешений, просто замените его пустым файлом с именем .htaccess. - person Gaʀʀʏ; 17.09.2012
comment
@Garry, это не так, как работает каскадирование .htaccess, вам нужно явно переопределить параметры. - person William Denniss; 28.10.2013

Если вы хотите предотвратить аутентификацию htaccess для какой-либо конкретной директории, вы можете использовать следующий код в своем файле htaccess вверху.

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

Также, если вы хотите предотвратить использование нескольких каталогов, добавьте

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

столько раз, сколько каталогов, вы хотите удалить из предотвращения доступа htaccess.

person Mohd Jafar    schedule 09.04.2018