Pregunta

Estoy tratando de hacer lo siguiente en mi aplicación web:

<img src="static.example.com/image01.jpg?width=300&height=300" />

¿Es posible tener mi servidor (yo uso de Apache en un entorno de alojamiento compartido) ejecutar un script PHP cuando se accede a un .jpg (o cualquier tipo de archivo que he elegido) en lugar de sólo sirve el archivo?

Yo sé que el script PHP tiene que establecer las cabeceras correctas etc, me pregunto cómo se puede ejecutar en el primer lugar.

Sé que esto puede hacerse de manera que:

<img src="static.example.com/get_image.php?name=image_01.jpg&width=300&height=300" />

pero no es así como me gustaría tenerlo.

¿Fue útil?

Solución

Se puede usar mod_rewrite siempre y cuando esté en un subdirectorio, o eso es todo su otra static.example.com va a hacer.

añadir algo como esto a su .htaccess en ese directorio.

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
   RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>

EDIT: Pruebe lo anterior. Como todo lo demás, no probado ...:)

El orden de los parámetros GET se vuelve importante.

test.jpg?height=100&width=120

debería llegar a convertirse en

controller.php?name=test.jpg&height=100&width=120


Otro enfoque sería hacer Apache servir como .jpg scripts PHP para ese directorio. Basta con mirar en su httpd.conf o php.conf y buscarse un .php. Encuentra la misma, así duplicarlo dentro de un <Directory> de .jpg. En realidad nunca he intentado esto para un solo directorio, pero en última instancia, sería más rápido que la ruta mod_rewrite.

Algo así como:

<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top