2009-04-30 28 views
3

是否可以將圖像重定向到動態生成的圖像(使用PHP)?將<img>標記指向由PHP動態生成的圖像?

我有一個動態創建的圖像,它有一個擴展名「.PHP」(很明顯),該服務器不受我控制。因此,我想將「somename.jpg」(在我的服務器上)重定向到「remoteserver/dynamicimage.php」(在某些不受我控制的遠程服務器上),以便我可以立即將其鏈接爲<img src="somename.jpg"/>並顯示動態生成的圖像。

請讓我知道這是否可能。

+0

哈哈!最終我找到了一個最簡單的解決方案。我創建了一個名爲'image.jpg'的文件夾,並在其中創建了一個重定向到遠程服務器的php文件。它的工作:) – apnerve 2009-04-30 14:21:41

回答

2

瀏覽器遵循重定向圖像。創建一個名爲「somename.jpg」一個php文件,並添加:

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

使用的Apache ForceType在.htaccess文件告訴服務器來處理.jpg文件作爲PHP:

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

或者,如果您不需要.jpg擴展名,只需調用文件somename.php即可。

你也許可以做到這一點使用mod_alias爲好,雖然我還沒有嘗試過:

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

這將進入一個.htaccess文件也是如此。

+0

感謝您的答案。那麼......可以告訴我如何使用這個「Forcetype」? – apnerve 2009-04-30 12:18:28

+0

添加了鏈接。但基本上它不像我在答案中所說的那樣。只需創建一個.htaccess並複製粘貼代碼。更改文件名。完成。 – 2009-04-30 12:19:44

2

嘗試增加這樣的事情.htaccess文件

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

這是可能的,但會導致HTTP重定向:

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

另一種方法是使用一個proxy(見P flag),讓您的服務器請求遠程資源,並將其傳遞迴客戶端。

2

頭功能控制HTTP報頭,這是什麼瀏覽器使用,以確定文件類型(或應在任何情況下)。它可以用來告訴瀏覽器腳本生成圖像文件是下載,而不是HTML腳本輸出:

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

另一個複雜得多,但令人難以置信的強大的方法是寫一個獲得此圖像局部位置的URL激活一些處理程序代碼。

這一個會從外國網址獲取數據,並輸出具有正確MIME類型的數據。

您還可以編寫一些代碼來緩存基於任何可行的數據。

這種方式你永遠不會放棄圖像的真實位置,你甚至可以使用一些祕密證書,如logindata或第三方cookie,它們不應該出現在你的網站上。

所有這一切都很難做,然後簡單地在apache配置中配置重定向。在這種情況下,我們做了這樣的事情,否則URL會泄露私人信息。