Pergunta

É possível redirecionar uma imagem para uma imagem gerada dinamicamente (usando PHP)?

Eu tenho uma imagem criada de forma dinâmica e tem uma extensão ".php" (obviamente) e esse servidor não está sob meu controle. Então, eu quero redirecionar "somename.jpg" (no meu servidor) para "remoteserver / dynamicimage.php" (em algum servidor remoto não está sob meu controle) para que eu possa imediatamente ligá-lo como <img src="somename.jpg"/> ea imagem gerada dinamicamente é mostrada .

Por favor, deixe-me saber se isso é possível.

Foi útil?

Solução

Navegadores segue redirecionamentos para imagens. Criar um arquivo php chamado "somename.jpg" e adicione:

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

Use o Apache directiva ForceType em uma .htaccess arquivo para dizer ao servidor para processar o arquivo .jpg como php:

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

Ou apenas chamar a somename.php arquivo se você realmente não precisa a extensão .jpg.

Você provavelmente poderia fazer isso usando mod_alias bem , embora eu não tentei:

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

Este seria ir em um arquivo .htaccess também.

Outras dicas

A função de cabeçalho controla o cabeçalho HTTP, que é o que os usos do navegador para determinar o tipo de arquivo (ou deveria, em qualquer caso.) Ele pode ser usado para dizer ao navegador que o script está gerando um arquivo de imagem para ser baixado , ao invés de saída do script HTML:

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

Tente adicionar algo como isto ao seu arquivo .htaccess

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

É possível, mas resultaria em um redirecionamento HTTP:

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

Uma alternativa seria usar um procuração (veja < a href = "http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule" rel = "nofollow noreferrer"> P bandeira ), para que o servidor solicita o recurso remoto e passa-lo de volta para o cliente.

Outra maneira poderosa muito mais complicado, mas incrível seria escrever algum código manipulador que é ativado para este local, url localização da imagem.

Este iria buscar os dados do url externa e emite os dados com o tipo mime direita.

Um você também escrever algum código para armazenar em cache este baseando dados sobre o que pode ser viável.

Desta forma, você nunca iria dar a localização real da imagem e você pode até mesmo usar algumas credenciais secretas como logindata ou cookies de terceiros que não deve aparecer em seu site.

Tudo isso é muito mais difícil de fazer, então simplesmente configurar um redirecionamento na configuração do apache. Nós fizemos coisas como esta nos casos em que a URL iria vazar informações privadas de outra forma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top