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


97

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

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

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

AuthName "Администратор сайта"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName безопасный
AuthType Basic
требуется имя пользователя username1
заказ разрешить, запретить
разрешить от всех

4
Это может быть лучше подходит для сбоя сервера.
просится

Ответы:


154

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

# allows any user to see this directory
Satisfy Any

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

Require all granted

7
Я мог только заставить это работать, а Allow from allне Satisfy Any.
Джесс Телфорд

@JessTelford хорошее использование фрагмента кода. @RageZ +1 за ответ, который сработал для меня. Не могли бы вы отредактировать ответ, чтобы он был очень простым, и опубликовать его с помощью метода фрагмента кода. Иначе кому-то придется подуматьthanks
Джесси Бурчик

2
@JessTelford Satisfy Anyработает, и он был неправильно написан как Satisify Any. Может быть, поэтому у вас не получилось.
BlueBird

1
Мне нужно было, чтобы один файл был незащищенным (все остальное защищено), сделанное таким же образом в разделе <Files>
Ник

Это не работает для меня - я все еще получаю модальный пароль с запросом имени пользователя и pwd .. Использование firefox и Windows 7 ... Кто-нибудь знает?
ItsMeDom

36

Добавляя к ответу 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!


9

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

Allow from all

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

Allow from x.x.x.x

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


Это сработало, когда я поставил «Требовать все предоставлено» вместо «Разрешить от всех» и «Удовлетворить любому». Эти двое не работали для меня. Я использую Apache 2.4.
endo64 06

1

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


4
вы знаете синтаксис? Я понимаю концепцию, но не знаю, как ее реализовать.
Justinl

Если вы хотите удалить текущий и не использовать никаких разрешений, просто замените его пустым файлом с именем .htaccess
Gaʀʀʏ

3
@Garry, каскадирование .htaccess работает не так, вам нужно явно переопределить параметры.
Уильям Деннисс

1

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

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

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


0

Если вы хотите предотвратить аутентификацию 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.