Domanda

È possibile reindirizzare un'immagine su un'immagine generata dinamicamente (usando PHP)?

Ho un'immagine creata dinamicamente e ha un'estensione ".PHP" (ovviamente) e quel server non è sotto il mio controllo. Quindi voglio reindirizzare " somename.jpg " (sul mio server) a " remoteserver / dynamicimage.php " (su alcuni server remoti non sotto il mio controllo) in modo da poterlo collegare immediatamente come < img src = " somename.jpg " / > e viene mostrata l'immagine generata dinamicamente.

Per favore fatemi sapere se questo è possibile.

È stato utile?

Soluzione

I browser seguono i reindirizzamenti per le immagini. Crea un file php chiamato " somename.jpg " e aggiungi:

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

Usa la direttiva Apache ForceType in un .htaccess file per indicare al server di elaborare il file .jpg come php:

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

O chiama semplicemente il file somename.php se non hai davvero bisogno dell'estensione .jpg.

Probabilmente potresti farlo utilizzando mod_alias , anche se non l'ho provato:

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

Questo andrebbe anche in un file .htaccess.

Altri suggerimenti

La funzione header controlla l'intestazione HTTP, che è ciò che il browser utilizza per determinare il tipo di file (o dovrebbe, in ogni caso). Può essere usato per dire al browser che lo script sta generando un file immagine da scaricare , anziché l'output dello script HTML:

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

Prova ad aggiungere qualcosa del genere al tuo file .htaccess

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

È possibile ma si tradurrebbe in un reindirizzamento HTTP:

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

Un'alternativa sarebbe utilizzare un proxy (vedi < a href = "http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule" rel = "nofollow noreferrer"> P flag ), in modo che il tuo server richiede la risorsa remota e la restituisce al client.

Un altro modo molto più complicato ma incredibile sarebbe quello di scrivere del codice del gestore che viene attivato per questo URL di localizzazione dell'immagine locale.

Questo recupererebbe i dati dall'URL esterno e genererebbe i dati con il giusto tipo mime.

Uno anche tu scrivi un po 'di codice per memorizzare nella cache questi dati basandoti su qualunque cosa sia possibile.

In questo modo non daresti mai la vera posizione dell'immagine e potresti persino usare alcune credenziali segrete come logindata o cookie di terze parti che non dovrebbero apparire sul tuo sito.

Tutto ciò è molto più difficile da fare quindi semplicemente configurare un reindirizzamento nella configurazione di Apache. Abbiamo fatto cose del genere nei casi in cui l'URL avrebbe perso informazioni private altrimenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top