Proteger com senha um diretório, mas não os arquivos desse diretório?

8

Eu queria saber se era possível proteger um diretório com uma combinação de nome de usuário / senha usando arquivos .htaccess e .htpasswd, mas não protegê-los. ou seja, é possível vincular, digamos, imagens nesse diretório a amigos, mas a navegação no próprio diretório não seria permitida sem um nome de usuário / senha. Obrigado a todos antecipadamente.

Ivo Flipse
fonte

Respostas:

9

Tente isso em seu .htaccess:

Require valid-user

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

Aqui Require valid-userrequer qualquer login conhecido. Em seguida, você altera essa restrição para arquivos com pelo menos um caractere em seu nome - é o que corresponderá ao padrão glob ?*da <Files>seção -, o que significa efetivamente que as regras incluídas se aplicam aos arquivos, mas não aos diretórios.

Nas regras alteradas para arquivos, a chave é Satisfy any. Ele permite que a autorização para satisfeito por qualquer credenciais ou endereço IP. Então você permite a passagem de qualquer endereço IP, para que as solicitações sejam sempre autorizadas.

Portanto, agora, navegar neste diretório ou em qualquer um de seus subdiretórios exigirá um login, mas a recuperação direta de um arquivo não será necessária.

Qual é o que você queria.

Aristóteles Pagaltzis
fonte
0

Sim, você pode proteger arquivos e diretórios por nome ou padrão. Você já deve usar isso para restringir o acesso aos arquivos .ht *. Verifique sua configuração do apache. O padrão de arquivo necessário provavelmente será '/ $'.

BillThor
fonte
0

Use LocationMatchpara limitar o material de autenticação ao índice do diretório.

Marian
fonte
<LocationMatch "/ pictures"> AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName "Diretório restrito" AuthType Basic </LocationMatch> <Limite GET POST> requer usuário válido </Limit> Este é o meu arquivo .htaccess atual, localizado em / pictures. Existe algo que estou fazendo errado? Isso parece retornar um erro interno do servidor 500.
a) leia sobre LocationMatch, requer uma regex. b) Você precisa colocar o require valid-userinterior do LocationMatchbloco, é claro (por que a Limitafirmação, afinal?) #
293 Marian
0

Você deseja apenas desativar a exibição do Apache no índice da pasta. Coloque isso no .htaccess:

Options -Indexes

Dessa forma, quando os Usuários visitam http://www.url.com/folder/, eles recebem um erro de listagem negada no Diretório . Mas quando eles visitam, http://www.url.com/folder/file.jpgeles podem ver o arquivo.

Pascal
fonte
11
Esta não é foi pediram, este desativar listas, não senha protege-los
Krzysztof Bociurko
-1

Se você deseja que a lista de diretórios seja visível apenas para usuários autenticados, mas permita que alguém faça o download de um arquivo (para que você possa enviar links de pessoas), precisará de um script de algum tipo (PHP, ASP, etc.) que solicite ao usuário uma senha e, se eles acertarem, exibe o conteúdo do diretório. Você colocaria esse script no diretório e o nomearia como index.php, para que seja servido em vez de apache, gerando um índice de diretório.

Daisetsu
fonte
-1

Sim. Adicione um arquivo index.html que lista o conteúdo da pasta e restrinja o acesso a esse arquivo com .htaccess. Se você deseja que o índice seja dinâmico, precisará usar algum tipo de script (ou inclusão do servidor) para gerar o índice.

Chris Nava
fonte
-2

Faça um chmod 777 nos arquivos, mas não na pasta principal.

Christoffer Madsen
fonte
2
Não, não é isso.
Ignacio Vazquez-Abrams