2011-07-28 9 views
11

Necesito proteger con contraseña un directorio con .htaccess, lo cual he hecho con éxito. Pero el front-end del sitio web fue programado para enlazar a las imágenes dentro de este directorio protegido por contraseña (no por mí), pero cuando una página web intenta acceder a esas imágenes, solicita al usuario que inicie sesión..htaccess proteger el directorio de la contraseña pero permitir los tipos de archivos de imagen

¿Es posible proteger con contraseña ese directorio, pero permite cualquier acceso a cualquier tipo de archivo de imagen como * .jpg y * .gif?

Mi código .htaccess actual es la siguiente:

AuthName "Secure Area" 
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd" 
AuthType Basic 
require valid-user 

Gracias por cualquier ayuda!

Respuesta

14
AuthName "Secure Area" 
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd" 
AuthType Basic 
require valid-user 
<FilesMatch "\.(png|jpe?g|gif)$"> 
    Satisfy Any 
    Allow from all 
</FilesMatch> 

Editar para incorporar la mejora de Shef

+1

+1. Corto y dulce! Aunque la expresión regular se debe cambiar para que coincida solo desde el final de la cadena 'FilesMatch '\. (Png | jpe? G | gif) $" '. – Shef

+0

Excelente, esto funcionó perfectamente, gracias! – Kevin

0

¿Has intentado ponerlo dentro de Filematch?

<FilesMatch "^.*(png|jpe?g|gif)$"> 
AuthName "Secure Area" 
AuthUserFile "/home/siteuser/.htpasswds/public_html/admin/passwd" 
AuthType Basic 
require valid-user 
</FilesMatch> 
+1

esto no funcionará. Asegura imágenes pero NO otros documentos. Enfrente de lo que OP quiere – genesis

-1

Lo que podría intentar es escribir un proxy de visualización de la imagen:

  • Mantener el directorio como lo tienes ahora, con protección por contraseña.
  • En el .htaccess en la raíz del sitio web donde están vinculadas las imágenes, agregue una regla Reescribir para aquellos tipos de imágenes que desee. Esta regla debería redirigir la llamada a un script de manejador de PHP.
  • Ese script debe evaluar la ruta solicitada, cargar el archivo del sistema de archivos, deducir su encabezado y enviarlo al cliente usando header(), seguido por el contenido del archivo de imagen echo file_get_contents() debe hacer.

PHP no se ve afectado por .htaccess, por lo que debería poder leer el archivo que necesita y delegarlo al usuario final.

Cuestiones relacionadas