2010-07-29 80 views
4

我正在尋找一種方法來告訴Apache,如果有來自某個目錄的文件請求,它應該首先運行一個php腳本來驗證用戶是否登錄。 我知道我可以把目錄放在docroot之外,讓一個php腳本處理認證和文件下載,但是因爲這些是試圖打開其他flash文件的flash文件,它必須是docroot中的一個目錄,並且這些文件不應該由php腳本發送。 在舊的設置中,我們使用mod_auth_script(http://sourceforge.net/projects/mod-auth-script/),但由於這是一個相當模糊的apache模塊,我寧願有一個更常用的解決方案,如果可能的話。在php/apache中使用身份驗證腳本保護目錄中的文件

回答

6

您可以使用.htaccess和mod_rewrite將請求重定向到php腳本。嘗試一些谷歌搜索,你會發現很多的例子。

的.htaccess內容例如:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ([0-9a-z-_]+)\.swf$ checkForAuth.php?&file=$1 [L] 

這將調用checkForAuth.php當有人將嘗試訪問* .swf文件。在checkForAuth.php中,您需要檢查會話,從$ _GET ['file']中讀取內容,設置正確的頭文件(content-type for flash)並輸出所請求的SWF文件的內容。

+0

以及我不想重定向,因爲Flash文件需要直接訪問。 Apache應該檢查用戶是否可以訪問該目錄(使用基於PHP的身份驗證來檢查會話),就是這樣。否則,啓動閃存文件無法訪問其他閃存文件 – Maarten 2010-07-29 08:59:10

+0

重定向將不會在用戶端看到。 URL將保持不變,但內容將通過將檢查會話的PHP文件給出。 – 2010-07-29 09:02:18

+0

啊對,所以Flash文件仍然只會請求/files/foo.swf ..請求鏈接太多了嗎? – Maarten 2010-07-29 09:05:24

相關問題