2012-06-07 76 views
0

我需要通過.htaccess使用動態圖像生成,以防萬一請求的圖像不存在但有一件事對我來說不清楚.....如果我在.htaccess中使用以下代碼:使用.htaccess動態圖像生成

# Images 
RewriteCond  %{SCRIPT_FILENAME}  !-f 
RewriteCond  %{SCRIPT_FILENAME}  !-d 
RewriteRule  ^static/images/([-\w]+)/([0-9]+)/([\.-\w]+)$ image_handler.php?area=$1& id=$2&filename=$3 [NC,QSA,L] 

只有當從地址欄(希望是有道理的)請求的URL到圖像的圖像獲取生成的,我認爲它應該工作,如果圖像是所謂的HTML?

回答

1

從Web服務器的角度來看,在瀏覽器的地址欄上直接輸入URL或者瀏覽器看到資源被引用的結果一個<img>標籤並執行請求以獲取它。 (這裏唯一的區別是一個會有一個HTTP referer頭文件集,另一個不會,但這與您的情況無關)

這兩種情況都會導致您想要的內容,它將請求重寫爲該網絡服務器並傳遞到PHP腳本處理程序,將(希望)返回您的圖像。所以你的假設是正確的。

沒有用的是嘗試通過其他方式訪問這些「虛擬映像」,例如服務器端腳本。您使用這些規則執行的任務是讓您的Web服務器將通過HTTP和static/images/的請求解釋爲應該由您指定的程序提供的服務。然後它將通過所述程序的輸出完成請求(在這種情況下爲image_handler.php)。這些圖像從不存儲或複製到服務器的磁盤或類似的東西(當然,除非你讓腳本這樣做)。因此,在服務器端,嘗試在磁盤上的任何位置查找這些映像都不起作用,可能不存在相應的目錄結構。

在客戶端(通過HTML,Javascript),它們應該像處理靜態資源一樣工作(拋開緩存考慮因素,因爲我們不知道腳本在這方面的處理方式)。