Защищать паролем каталог, но не файлы этого каталога?

8

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

Иво Флипс
источник

Ответы:

9

Попробуйте это в своем .htaccess:

Require valid-user

<Files ?*>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Здесь Require valid-userтребуется любой известный логин. Затем вы изменяете это ограничение для файлов с хотя бы одним символом в имени - это то, чему будет соответствовать шаблон glob ?*для <Files>раздела - что фактически означает, что вложенные правила применяются к файлам, но не к каталогам.

В измененных правилах для файлов ключ есть Satisfy any. Это позволяет разрешение на Удовлетворенный либо полномочий или IP - адрес. Затем вы пропускаете любой IP-адрес, поэтому запросы всегда авторизуются.

Так что теперь просмотр этого каталога или любого из его подкаталогов потребует входа в систему, но непосредственного извлечения файла из него не будет.

Что ты и хотел.

Аристотель Пагальцис
источник
0

Да, вы можете защитить файлы и каталоги по имени или шаблону. Вы уже должны использовать это, чтобы ограничить доступ к файлам .ht *. Проверьте настройки Apache. Необходимый шаблон файла, вероятно, будет '/ $'.

BillThor
источник
0

Используется LocationMatchдля ограничения содержимого аутентификации индексом каталога.

Мэриан
источник
<LocationMatch "/ pictures"> AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName «Ограниченный каталог» AuthType Basic </ LocationMatch> <Limit GET POST> требуется действительный пользователь </ Limit Это мой текущий файл .htaccess, расположенный в / pictures. Я что-то не так делаю? Кажется, это возвращает 500 внутренних ошибок сервера.
а) читать о LocationMatch, это требует регулярных выражений. б) Вы должны положить require valid-userвнутрь LocationMatchблока, конечно (почему Limitзаявление в любом случае?)
Мариан
0

Вы хотите просто отключить отображение Apache индекса папки. Поместите это в .htaccess:

Options -Indexes

Таким образом, когда пользователи посещают http://www.url.com/folder/, они получают список ошибок в каталоге . Но когда они посещают, http://www.url.com/folder/file.jpgони могут видеть файл.

паскаль
источник
1
Это не было задано, это отключить списки, а не пароль защищает их
Кшиштоф Bociurko
-1

Если вы хотите, чтобы список каталогов был виден только авторизованным пользователям, но позволял кому-либо загружать файл (чтобы вы могли отправлять ссылки людям), вам нужен скрипт какого-то типа (PHP, ASP и т. Д.), Который запрашивает у пользователя пароль и, если они получат его правильно, отображает содержимое каталога. Вы бы поместили этот скрипт в каталог и назвали его index.php, чтобы он обслуживался, а не apache, генерирующий индекс каталога.

Daisetsu
источник
-1

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

Крис Нава
источник
-2

Сделайте chmod 777 для файлов, но не для основной папки.

Кристоффер Мэдсен
источник
2
Нет, не это.
Игнасио Васкес-Абрамс