Question

Est-il possible de rediriger une image vers une image générée dynamiquement (avec PHP)?

J'ai une image créée dynamiquement et elle porte l'extension ".PHP". (évidemment) et ce serveur n'est pas sous mon contrôle. Je souhaite donc rediriger "& nom; quelque chose.jpg". (sur mon serveur) sur "remoteserver / dynamicimage.php". (sur un serveur distant qui n’est pas sous mon contrôle) afin que je puisse immédiatement le lier comme < img src = "quelquenom.jpg" / > et l’image générée dynamiquement est affichée.

Faites-moi savoir si cela est possible.

Était-ce utile?

La solution

Les navigateurs suivent les redirections pour les images. Créez un fichier php appelé "somename.jpg " et ajoutez:

<?php
header('Location: http://www.otherserver.com/image.php');

Utilisez la directive Apache ForceType dans un fichier .htaccess. fichier pour indiquer au serveur de traiter le fichier .jpg en php:

<Files somename.jpg>
    ForceType application/x-httpd-php
</Files>

Ou appelez simplement le fichier somename.php si vous n'avez pas vraiment besoin de l'extension .jpg.

Vous pouvez probablement y arriver en utilisant mod_alias . , même si je ne l’ai pas essayé:

Redirect somename.jpg http://www.otherserver.com/image.php

Cela irait également dans un fichier .htaccess.

Autres conseils

La fonction header contrôle l’en-tête HTTP utilisé par le navigateur pour déterminer le type de fichier (ou doit, dans tous les cas). Il peut être utilisé pour indiquer au navigateur que le script génère un fichier image à télécharger. , plutôt que la sortie de script HTML:

header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="somename.jpg"');

Essayez d’ajouter quelque chose comme ceci à votre fichier .htaccess

RewriteEngine on
RewriteRule ^(.*)\.jpg$ /scripts/$1.php

Cela est possible mais entraînerait une redirection HTTP:

RewriteEngine on
RewriteRule ^somename\.jpg$ http://remoteserver/dynamicimage.php [L]

Une autre solution consisterait à utiliser un proxy (voir < a href = "http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule" rel = "nofollow noreferrer"> indicateur P ), de sorte que votre serveur demande la ressource distante et la renvoie au client.

Un autre moyen beaucoup plus compliqué mais incroyablement puissant consiste à écrire un code de gestionnaire qui est activé pour cette URL de localisation d'image locale.

Celui-ci récupèrerait les données de l'URL étrangère et les afficherait avec le bon type mime.

Vous écrivez également du code pour mettre en cache ces données en vous basant sur ce qui est réalisable.

Ainsi, vous ne céderiez jamais le véritable emplacement de l'image et vous pouvez même utiliser des identifiants secrets tels que les cookies logindata ou des cookies tiers, qui ne devraient pas apparaître sur votre site.

Tout cela est beaucoup plus difficile à faire que de simplement configurer une redirection dans la configuration d’apache. Nous avons fait des trucs comme celui-ci dans les cas où l'URL aurait des informations privées autrement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top