entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Proteger directorios htaccess

Necesito proteger varios directorios con contraseñas distintas para diferentes clientes, pongo un ejemplo. Estructura de mi web y a qué clientes les pertenece cada carpeta:

Dominio
   Carpeta 1 - Usuario 1
      |_Doc 1
      |_Doc 2
   Carpeta 2 - Usuario 2
      |_Doc 1
      |_Doc 2
   Carpeta 3 - Usuario 3
      |_Doc 1
      |_Doc 2

Necesito que los usuarios solo vean sus carpetas, y que aunque intenten acceder a otra, se les deniegue el permiso. A poder ser evitar usar base de datos, y si se puede con el .htaccess y el .htpasswd mejor.

Vi por muchas páginas que era bastante sencillo, añadir la ruta al htaccess, denegar acceso, crear contraseña cifrada y poco más.

Lo hice de la siguiente forma, y no me funcionó, aún no entiendo el porqué.

.htaccess en Carpeta 1
AuthName "Restricted Area"

AuthType Basic

AuthUserFile /var/www/html/carpeta1/.htpasswd

AuthGroupFile /dev/null

require user Usuario 1

Luego generé un usuario y contraseña mediante una página externa para que cifrase el contenido, y lo pegué al .htpasswd que había creado en el mismo directorio que Carpeta 1.

Y se suponía que así cuando se intentase entrar en la página, se pediría usuario y contraseña, pero en cambio me saltó un error 404.

2 Respuestas

0voto

Lilii Puntos1150

¡Lo resolví! Todo el código estaba bien, pero se ve que por una actualización de Apache no es compatible con las reglas heredadas del .htaccess para proteger directorios. Así que buscando, encontré que al añadir ErrorDocument 401 "Autorización Requerida" al final del código del .htaccess anterior, funciona.

0voto

Peter comentado

Gracias por compartir tu solución.

1voto

Peter Puntos150460

Son dos archivos.

El .htaccess va así:

AuthType Basic
AuthName "Area Protegida"
AuthUserFile /ruta/para/.htpasswd
Require valid-user

El .htpasswd va algo así.

usuario:$apr1$q0sjoykG$YNFnh8uJoCfM/wPEiYdWc.

Obviamente la ruta en el .htaccess tiene que ser la correcta de tu servidor y el contenido del .htpasswd tiene que ser creado previamente con MD5 para el usuario y contraseña deseado.

Si fuera de esto tienes redirecciones para tus carpetas en otro .htaccess, puede ser el motivo de que te mande a un 404.

Usándolo tal cual lo comento, te funciona perfectamente.

0voto

Lilii comentado

Mi htaccess se ve así ahora mismo

ErrorDocument 400 /.error.php
ErrorDocument 401 /.error.php
ErrorDocument 403 /.error.php
ErrorDocument 404 /.error.php
ErrorDocument 405 /.error.php
ErrorDocument 408 /.error.php
ErrorDocument 414 /.error.php
ErrorDocument 500 /.error.php
ErrorDocument 502 /.error.php
ErrorDocument 504 /.error.php

DirectoryIndex index.htm index.html index.shtml index.php default.php .index.php

AuthType Basic
AuthName "Area Protegida"
AuthUserFile /var/www/html/.htpasswd
Require valid-user

El htpasswd, cifrado mediante una página web:

Prueba1:$apr1$NElRuMTG$HlEffi0dRdz8BNdSk9XPW/

El htaccess está en la carpeta1, que es la que quiero que tenga contraseña, el htpasswd, en la raíz de la web.
No sé realmente si lo que contiene el htaccess es una redirección, pero no tengo nada más parecido. Aún así, sigue saliendo el error.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta