Como remover a proteção por senha .htaccess de um subdiretório


97

Tenho protegido por senha todo o meu site usando, .htaccessmas gostaria de expor um dos subdiretórios para que possa ser visualizado sem uma senha.

Como posso desativar a proteção por senha htaccess para um subdiretório? Especificamente, qual é a .htaccesssintaxe.

Aqui está meu .htaccessarquivo que está localizado na raiz do meu ftp.

AuthName "Administrador do site"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName seguro
AuthType Basic
requer usuário nomedeusuário1
pedido permitir, negar
permitir de todos

4
Isso pode ser mais adequado para serverfault.
início de

Respostas:


154

Você precisa criar um novo .htaccessarquivo no diretório necessário e incluir a Satisfy anydiretiva nele, para até o Apache 2.3:

# allows any user to see this directory
Satisfy Any

A sintaxe mudou no Apache 2.4, isso tem o mesmo efeito:

Require all granted

7
Eu só poderia fazer isso funcionar com Allow from allnão Satisfy Any.
Jess Telford,

@JessTelford bom uso do snippet de código. @RageZ +1 pela resposta que funcionou para mim. Você poderia editar a resposta para ser super simples e postá-la usando o método de trecho de código. Caso contrário, alguém terá que pensarthanks
Jesse Burcsik

2
@JessTelford Satisfy Anyestá funcionando e foi soletrado incorretamente como Satisify Any. Pode ser que seja por isso que não funcionou para você.
BlueBird de

1
Eu precisava ter um único arquivo desprotegido (todo o resto protegido), feito o mesmo na seção <Arquivos>
Nick

Isso não funciona para mim - eu ainda recebo a senha modal pedindo nome de usuário e pwd .. Usando o firefox e windows 7 ... Alguém tem alguma idéia?
ItsMeDom

36

Somando-se à resposta de RageZ, usei isso nas diretivas do servidor:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Impressionante. Obrigado RageZ!



1

Você precisa adicionar outro arquivo .htaccess ao subdiretório que substitui a autenticação. .htaccess em cascata para cima, ou seja, ele irá procurar na pasta atual, então irá subir um nível e assim por diante.


4
por acaso você conhece a sintaxe? Eu entendo o conceito, mas não sei como implementá-lo.
justinl

Se você deseja remover o atual e não usar permissões, basta substituí-lo por um arquivo vazio chamado .htaccess
Gaʀʀʏ

3
@Garry não é assim que o cascateamento .htaccess funciona, você tem que substituir explicitamente as opções.
William Denniss,

1

Esta é uma maneira de permitir o subdiretório "foo" por meio da autenticação básica do arquivo .htaccess principal em um site:

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

Nota: Isso funciona no Apache 2.4. Não confirmei para versões anteriores.


0

Se você quiser evitar qualquer directoty específico da autenticação htaccess, você pode usar o código a seguir em seu arquivo htaccess na parte superior.

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

Além disso, se você quiser evitar vários diretórios, adicione

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

quantas vezes forem necessários diretórios, você deseja remover da prevenção htaccess.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.