Question

Je suis en train de faire ce qui suit dans mon application web:

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

Est-il possible d'avoir mon serveur (j'utilise Apache dans un environnement d'hébergement partagé) exécuter un script PHP lors de l'accès à un .jpg (ou tout autre type de fichier que j'ai choisi) au lieu de simplement servir le fichier?

Je sais que le script PHP doit définir les en-têtes à droite etc, je me demande comment il peut être exécuté en premier lieu.

Je sais que cela peut être fait comme ceci:

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

mais ce n'est pas comment je voudrais avoir.

Était-ce utile?

La solution

Vous pouvez utiliser mod_rewrite à condition que vous êtes dans un sous-répertoire, ou qui est tout l'autre static.example.com va faire.

Ajoutez quelque chose comme ceci à votre .htaccess dans ce sous-répertoire.

<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: Essayez ci-dessus. Comme tout le reste, non testé ...:)

L'ordre des paramètres GET devient important.

test.jpg?height=100&width=120

devrait se transformer en

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


Une autre approche serait de faire apache servir .jpg sous forme de scripts php pour ce répertoire. Il suffit de regarder dans votre httpd.conf ou php.conf et chercher .php. Trouvez cette directive, et la dupliquer dans un <Directory> pour .jpg. Je ne l'ai jamais vraiment essayé cela pour un seul répertoire, mais finalement il serait plus rapide que la route mod_rewrite.

Quelque chose comme:

<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top