2012-01-12 95 views
2

我有不同的用戶爲我的網站,擁有不同的圖像,這些圖像都存儲在同一個文件夾。圖像以增量方式存儲,1.jpg,2.jpg等 用戶可以在特定的php頁面上查看這些圖片。現在我只想通過這個php頁面限制對這些圖像的訪問,這樣他們就不能簡單地枚舉所有的文件名來查看其他用戶的圖像。只允許從特定的HTML頁面訪問圖像

我想與存儲除了圖像/shop/img/userimg/,並會是這個樣子的.htaccess文件這樣做的:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/shop/shop.php [NC] 
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F] 

我的網站是一個子網站(你可以看到:/店/)和PHP頁面查看這些圖像將是shop.php

現在,這可能嗎?我究竟做錯了什麼?

回答

2

請注意,referer頭是不可信的。一些代理和防火牆完全刪除頭,所以你必須說明它不存在(這是第二行是什麼)

RewriteCond %{HTTP_REFERER} !/shop/shop\.php$ [NC] 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,L] 
1

嘗試將以下內容添加到您的htaccess文件中。

RewriteEngine On 
RewriteBase/

#if the referer (page request came from) does not contain shop.php 
RewriteCond %{HTTP_REFERER} !/shop/shop\.php [NC] 
#and it is a request for images, then send a 403 forbidden 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,L] 
+0

我想你是缺少'!'。該代碼目前與beta想要的相反。 – Gerben 2012-01-12 17:08:37

+1

@Gerben - 更正以上 - 感謝您的發現! – 2012-01-12 17:41:29