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

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

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

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

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

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

6 ответов

Решение

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

# allows any user to see this directory
Satisfy Any

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

Require all granted

В дополнение к ответу 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!

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

Allow from all

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

Allow from x.x.x.x

Смотрите: http://httpd.apache.org/docs/current/mod/mod_access_compat.html

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

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

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

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

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

Другие вопросы по тегам