2009-10-14 29 views
0

我試圖做我的web應用程序如下:如何通過php腳本獲取資源?

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

是否有可能有我的服務器(我使用Apache的共享主機環境)中運行訪問.JPG當PHP腳本(或任何我選擇的文件類型)而不是僅僅提供文件?

我知道PHP腳本必須設置正確的頭文件等,我只是想知道它如何可以在第一個地方運行。

我知道這是可以爲這樣做:

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

,但是這不是我多麼想擁有它。

回答

3

你可以使用mod_rewrite,只要你在一個子目錄中,或者你的其他所有static.example.com都會這樣做。

將這樣的內容添加到該子目錄中的.htaccess中。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+) 
    RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2 
</IfModule> 

編輯:嘗試以上。像所有其他的一樣,未經測試... :)

GET參數的順序變得重要。

test.jpg?height=100&width=120 

應該得到變成

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


另一種辦法是讓Apache服務.JPG作爲該目錄的PHP腳本。 只需在你的httpd.conf或php.conf中查找.php。查找該指令,然後在 <Directory>內複製.jpg。 我從來沒有真正嘗試過這個單一的目錄,但最終它會比mod_rewrite路線更快。

喜歡的東西:

<Files *.jpg> 
SetOutputFilter PHP 
SetInputFilter PHP 
</Files> 
AddType application/x-httpd-php .jpg 
+0

我假設*可改爲* JPG或其他正則表達式匹配我想要的擴展,正確的。? – 2009-10-14 02:08:07

+0

它幾乎可以工作,但我認爲參數不能正確傳遞。 這是我的查詢字符串:image01.jpg高度= 200寬度= 300 這是我在我的.htaccess:。 RewriteEngine敘述在 重寫規則(* \ JPG | * \。但是,當我打印$ _SERVER ['QUERY_STRING']它給q = image01.jpg(我想它給高度= 200和寬度= 300)。 感謝您的幫助。 – 2009-10-14 03:39:40

+0

如果您打印$ _GET ['q'],會發生什麼情況? – 2009-10-14 13:31:20