Cómo eliminar la protección con contraseña .htaccess de un subdirectorio

97

He protegido con contraseña todo mi sitio web usando, .htaccesspero me gustaría exponer uno de los subdirectorios para que se pueda ver sin contraseña.

¿Cómo puedo deshabilitar la protección con contraseña de htaccess para un subdirectorio? Específicamente cuál es la .htaccesssintaxis.

Aquí está mi .htaccessarchivo que se coloca en la raíz de mi ftp.

AuthName "Administración del sitio"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName seguro
AuthType Basic
requerir usuario username1
orden permitir, negar
permitir de todos
justinl
fuente
4
Esto podría ser más adecuado para errores del servidor.
ruega el

Respuestas:

154

Debe crear un nuevo .htaccessarchivo en el directorio requerido e incluir la Satisfy anydirectiva en él como tal, hasta Apache 2.3:

# allows any user to see this directory
Satisfy Any

La sintaxis cambió en Apache 2.4, esto tiene el mismo efecto:

Require all granted
RageZ
fuente
7
Solo pude hacer que esto funcione con Allow from allno Satisfy Any.
Jess Telford
@JessTelford buen uso del fragmento de código. @RageZ +1 para una respuesta que funcionó para mí. ¿Podría editar la respuesta para que sea súper simple y publicarla usando el método de fragmento de código? De lo contrario, alguien tendrá que pensarthanks
Jesse Burcsik
2
@JessTelford Satisfy Anyestá funcionando y estaba mal escrito como Satisify Any. Puede ser que esa sea la razón por la que no funcionó para usted.
BlueBird
1
Necesitaba tener un solo archivo desprotegido (todo lo demás protegido), hecho lo mismo en la sección <Archivos>
Nick
Esto no funciona para mí - todavía obtengo la contraseña modal pidiendo nombre de usuario y pwd .. Usando Firefox y Windows 7 ... ¿Alguien tiene alguna idea?
ItsMeDom
36

Agregando a la respuesta de RageZ, usé esto en las Directivas del 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>

Increíble. ¡Gracias RageZ!

atonyc
fuente
9

Simplemente cree uno nuevo .htaccessen el subdirectorio deseado con esta directiva:

Allow from all

Puede restringir su IP solo con:

Allow from x.x.x.x

Ver: http://httpd.apache.org/docs/current/mod/mod_access_compat.html

Paul Rad
fuente
Funcionó cuando puse "Requerir todos concedidos" en lugar de "Permitir de todos" y "Satisfacer cualquiera". Esos dos no funcionaron para mí. Estoy en Apache 2.4.
endo64
1

Debe agregar otro archivo .htaccess al subdirectorio que anula la autenticación. .htaccess va en cascada hacia arriba, es decir, buscará en la carpeta actual, luego subirá un nivel y así sucesivamente.

Fenton
fuente
4
¿Conoces la sintaxis? Entiendo el concepto pero no sé cómo implementarlo.
justinl
Si desea eliminar el actual y no usar permisos, simplemente reemplácelo con un archivo vacío llamado .htaccess
Gaʀʀʏ
3
@Garry no es así como funciona la cascada de .htaccess, tienes que anular explícitamente las opciones.
William Denniss
1

Aquí hay una forma de permitir el subdirectorio "foo" a través de la autenticación básica del archivo .htaccess principal en un sitio:

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

Nota: esto funciona en Apache 2.4. No lo he confirmado para versiones anteriores.

PeterA
fuente
0

Si desea evitar cualquier directoty específico de la autenticación de htaccess, puede usar el siguiente código en su archivo htaccess en la 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

Además, si desea evitar varios directorios, agregue

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

tantas veces como directorios desee eliminar de la prevención de htaccess.

Mohd Jafar
fuente