2010-06-28 15 views
8

¿Es posible?Sirviendo imágenes desde fuera del documento raíz

Digamos que mi estructura de directorios es el siguiente:

raíz
/data 
    /data/images 
/public 

El documento se encuentra en el directorio "público". Esto no funcionará, por supuesto:

<img src="/../data/images/1.png" alt="" /> 

¿Pero tal vez es posible habilitar la publicación de imágenes desde el directorio arriba de la raíz del documento de alguna manera? Me gustaría saber.

+3

Bueno, hay varias formas, como 'symlink'. Pero sería imposible dar la respuesta correcta antes de decirnos cuál es el propósito de almacenar imágenes fuera de la raíz del documento –

+0

Puede usar .htaccess para reescribir cualquier solicitud entrante a una imagen para pasarla a través de una secuencia de comandos de imagen, pero luego de nuevo, ¿por qué querrías hacer tal cosa? No es que esto proteja tus imágenes de nada. Una vez que se muestra en el navegador, está en el cliente. – Gordon

Respuesta

12

La forma más común es un Alias:

Alias /data/ /wherever/your/data/are/ 
+1

+1 esto necesita ser puesto en el 'httpd.conf' mismo, sin embargo, no funcionará en un archivo' .htaccess'. –

+1

+1, utilicé este método para tratar de mantener tantos documentos fuera del public_html como seguridad. – RobertPitt

+1

@Robert umm, ¿cómo agregaría eso seguridad? – Gordon

4

Otra forma (por ejemplo, si no se puede establecer un alias ...) sería el uso de un script como el origen de la imagen, por ejemplo:

<img src="image.php?img=myImage.jpg" /> 

image.php sería similar a:

<?php 
    header('Content-Type: image/jpg'); 
    readfile("../img/" . $_GET['img']); 
?> 

Por supuesto que había necesidad de extender la secuencia de comandos para filtrar $ _GET ['img'], así como detectar y establecer el tipo de contenido correcto. Su secuencia de comandos podría incluso cambiar el tamaño de la imagen de acuerdo con otros parámetros pasados ​​en la cadena de consulta.

Cuestiones relacionadas