Come recuperare una risorsa tramite uno script php?
-
21-09-2019 - |
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.
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