2011-01-07 402 views
0

我試圖保持私人文件夾,但允許html文件訪問該文件中包含的內容。htaccess目錄問題

例如,在私人文件夾中的.htaccess包含
爲了否認,允許
所有
拒絕允許從127.0.0.1

裏面,有一個名爲「hidden.jpg」

圖像

以外的私人文件夾,我想打一個HTML文件與線
<img src='private/hidden.jpg'>

不幸的是,我無法看到圖像。任何想法在更好的方式來做到這一點?我也試過把這個文件放在web目錄之外,並用file_get_contents()來抓取它,但是這並沒有正確抓取整個文件(當播放以這種方式訪問​​的.ogv文件時,HTML5視頻播放器會中斷)

任何幫助非常感激。

+0

我不能相信file_get_contents()沒有獲得所有的文件內容,你可以使用readfile()代替file_get_contents()http://www.php.net/manual/en/function.readfile.php – 2011-01-07 20:47:29

+0

readfile over file_get_contents()不是問題。問題在於HTML5視頻播放器無法播放動態投放的視頻。 – user490895 2011-01-07 22:10:23

+0

如果它是相關的,ogv文件使用ffmpeg2theora-0.27 – user490895 2011-01-07 22:13:14

回答

0

你的帖子有點含糊,所以我會盡我所能回答它。

你必須記住,.htaccess的是服務器雙面。而HTML請求(如IMG標記)是客戶端的,這意味着它完全不同的HTTP請求獲取該圖像標記。允許從127.0.0.1允許服務器打開它,但不允許任何客戶端(因爲瀏覽器,除非在服務器上,將永遠是另一個IP地址)。

您的HTACCESS代碼將只允許圖像被服務器訪問(這是毫無意義的)。 HTACCESS用於過濾/控制/編輯HTTP請求,這是瀏覽器所做的。實際上,您的HTACCESS配置將不會允許任何人查看圖像。

你想要完成的事情是不可能的;服務器將不知道哪個請求來自哪個HTML文件,並且始終總是會通過來欺騙該請求,讓其他人訪問該映像。

希望這會有所幫助!

1

嘗試通過HTML文檔訪問文件與直接訪問文件相同。如果您無法直接訪問它,則無法將其放入<img>標籤中。

.ogv文件有多大?如果文件太大,file_get_contents()將會失敗,因爲它會嘗試將整個文件讀入內存。嘗試readfile()

但我仍然不確定你想在這裏實現什麼。即使您使用簡單的PHP腳本從Web目錄之外獲取文件,任何知道該PHP腳本路徑的人都可以像獲取公共文件一樣容易地獲取該文件。它是否支持某種登錄?

0

老問題,但這可能有助於某人。如果你添加一個。htaccess文件的目錄,並把這個裏面:

Options -Indexes 

這將允許您訪問個別URL目錄的內容,但無法查看該目錄本身。