Мне было просто интересно, можно ли защитить каталог с помощью комбинации имени пользователя и пароля с помощью файлов .htaccess и .htpasswd, но не защитить файлы внутри. т.е. можно связать, скажем, изображения в этом каталоге с друзьями, но просмотр самого каталога не будет разрешен без имени пользователя / пароля. Спасибо всем заранее.
7 ответов
Попробуйте это в вашем .htaccess
:
Require valid-user
<Files ?*>
Order allow,deny
Allow from all
Satisfy any
</Files>
Здесь Require valid-user
требуется любой известный логин. Затем вы изменяете это ограничение для файлов с хотя бы одним символом в имени - это что за шаблон с глобусом ?*
для раздела <Files>
будет совпадать - это означает, что прилагаемые правила применяются к файлам, но не к каталогам.
В измененных правилах для файлов ключ Satisfy any
. Это позволяет разрешение на удовлетворенный либо полномочия или IP - адрес. Затем вы пропускаете любой IP-адрес, поэтому запросы всегда авторизуются.
Так что теперь просмотр этого каталога или любого из его подкаталогов потребует входа в систему, но непосредственного извлечения файла из него не будет.
Что ты и хотел.
Да, вы можете защитить файлы и каталоги по имени или шаблону. Вы уже должны использовать это, чтобы ограничить доступ к файлам .ht *. Проверьте вашу конфигурацию apache. Необходимый шаблон файла, вероятно, будет '/$'.
Используйте LocationMatch
чтобы ограничить содержимое аутентификации индексом каталога.
Вы хотите просто отключить отображение Apache индекса папки. Поместите это в .htaccess:
Options -Indexes
Таким образом, когда пользователи посещают http://www.url.com/folder/
, они получают сообщение об отказе в листинге Справочника . Но когда они посещают http://www.url.com/folder/file.jpg
они могут видеть файл.
Если вы хотите, чтобы список каталогов был виден только авторизованным пользователям, но позволял кому-либо загружать файл (чтобы вы могли отправлять ссылки людям), то вам нужен скрипт какого-то типа (PHP, ASP и т.д.), Который запрашивает у пользователя пароль и, если они получат его правильно, отображает содержимое каталога. Вы поместите этот скрипт в каталог и назовете его index.php, чтобы он обслуживался, а не apache, генерирующий индекс каталога.
Да. Добавьте файл index.html, в котором указано содержимое папки, и ограничьте доступ к этому файлу с помощью .htaccess. Если вы хотите, чтобы индекс был динамическим, вам нужно будет использовать какой-то сценарий (или серверную часть) для генерации индекса.
Сделайте chmod 777 над файлами, но не над основной папкой.