2016-01-05 112 views
2

我正在開發一個Web應用程序,所有的圖像請求都由index.php頁面直接處理。例如,如果對文件image1.png發出請求,則會將其重定向到index.php,其中顯示image1.png文件的詳細信息。PHP:處理動態文件請求

當文件名作爲GET參數傳遞到index.php文件時,我已經編寫了用於顯示文件細節的代碼。

但我不知道如何捕獲所有的圖像文件請求,並將它們重定向到index.php,同時通過GET傳遞所請求的文件名作爲參數。

任何幫助將是偉大的。 :)

+1

你可以編輯帖子並顯示你的代碼嗎? – jilesh

+0

老實說,我不知道如何處理動態請求:( –

+0

你的意思是什麼動態請求? –

回答

2

嘗試在文檔根目錄下的.htaccess文件如下:

RewriteEngine On 
RewriteRule (.+\.png)$ index.php?file=$1 [L] 

內部重寫所有.png文件index.php傳遞完整的URL作爲URL參數。 (雖然這主要是排除斜槓前綴您可以手動如果需要的話包括這如?file=/$1。)

要延長這包括.jpg文件以及隨後改變RewriteRule模式:

RewriteRule (.+\.(png|jpg))$ index.php?file=$1 [L] 

編輯:路由所有非PHP文件,你可以這樣做:

RewriteCond %{REQUEST_URI} (.*) 
RewriteRule !\.php$ index.php?file=%1 [L] 

對於所有非PHP文件(請注意否定正則表達式,前綴爲!),請求被重寫,並將請求的URL傳遞給index.php。請注意,否定正則表達式不能包含捕獲組,因此需要單獨的條件。

請注意,這包括斜槓前綴(因爲它作爲REQUEST_URI變量的一部分包含在內),而上面的示例沒有。

+0

非常感謝你,它的工作,但我可以重定向所有非php文件請求以相同的方式嗎? –

+1

不完全同樣的方式,因爲「所有非php」文件都需要一個否定的正則表達式 - 我將用一個示例更新我的答案。 – MrWhite

+0

剛剛更新/修復了'RewriteCond'以在_CondPattern_包含括號(捕獲組)。 – MrWhite