Domanda

che sto cercando di fare quanto segue nella mia applicazione web:

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

E 'possibile avere il mio server (io uso Apache in un ambiente di hosting condiviso) eseguire uno script PHP quando si accede a un file .jpg (o qualsiasi tipo di file che ho scelto) invece di servire il file?

So che lo script PHP ha per impostare le intestazioni di destra, ecc, mi chiedo solo come possa essere eseguito in primo luogo.

So che questo può essere fatto come:

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

, ma non è così che mi piacerebbe averlo.

È stato utile?

Soluzione

Si potrebbe utilizzare mod_rewrite previsto ci si trova in una sottodirectory, o che è tutto il vostro altro static.example.com farà.

Aggiungere qualcosa di simile al tuo .htaccess in quella sottodirectory.

<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: Prova quanto sopra. Come tutto il resto, non provato ...:)

L'ordine dei parametri GET diventa importante.

test.jpg?height=100&width=120

dovrebbe arrivare trasformato in

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


Un altro approccio sarebbe quello di rendere Apache servire .jpg come script php per quella directory. Basta guardare nel vostro httpd.conf o php.conf e cercare i .php. Trova tale direttiva, e duplicarlo all'interno di un <Directory> per .jpg. Non ho mai effettivamente provato questo per una singola directory, ma alla fine sarebbe più veloce rispetto al percorso mod_rewrite.

Qualcosa di simile:

<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top