2010-11-19 59 views
2

我想限制對Apache文件的訪問。 受限制文件的列表應該是可變的。 如果文件訪問被限制並且沒有找到特定的cookie,那麼用戶 應該被重定向到一個網站(有可能獲得cookie) - 如果找到了,文件將被「加載」。用mod_rewrite進行文件訪問控制

我想用mod_rewrite來解決這個問題。

我的想法是,我將所有請求重定向到一個handler.php腳本。

這個「handler.php」尋找請求並決定訪問是否被允許。直到這裏沒問題。

現在的問題是,如果允許訪問 - 文件必須加載。因此,我不知道啞劇,文件大小等

病程中,我可以寫類似

if ($ext == '.jpg') header('Content-Type: ...'); 

但我不希望使用此解決方案,因爲我要處理所有可能的文件( PNG,GIF,EXE,MP3,ZIP,ETC)。問題是我無法知道所有的MIME類型。

如果我可以調用Apache(在子請求中)加載文件(這次沒有handler.php),那將是非常棒的。

在我的情況下,我不想像mod_auth那樣嚴格保護資源,因爲我只想爲成熟的內容(包含血液並且不適合兒童使用的繪製圖稿)添加免責聲明。如果找不到cookie,我想顯示免責聲明,如果cookie在那裏,我可以顯示圖片。

回答

1

考慮到您希望阻止訪問給定路徑下的所有資源,在我看來,Apache authorization對您來說可能更好。這是比在每個資源請求上手動檢查會話更清潔的解決方案,並且不會遇到您描述的內容類型處理問題。

修訂:

在這種情況下,我建議你看看working with cookies and .htacces

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_COOKIE} !CookieName= [NC] 
RewriteRule .* http://www.example.com/members/login.php [L] 
+0

感謝您的提示。你的意思是簡單的「.htpasswd」技術?當然,這是非常安全的。但在我的情況下,我不想嚴格保護資源,因爲我只想給成熟的內容添加免責聲明(包含血液並且對兒童不利的繪畫作品)。如果找不到cookie,我想顯示免責聲明,如果cookie在那裏,我可以顯示圖片。 – 2010-11-19 17:38:42

+0

@丹尼爾查看修改後的帖子 – BBonifield 2010-11-19 19:28:54

+0

Hello BBonifield。感謝您的解決方案。我用一個.htaccess和一個顯示免責聲明的example.php腳本來試用它,設置cookie並重新加載頁面。這一次真實文件被加載。 – 2010-11-19 21:27:29