2012-01-12 20 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

リファラーヘッダーは信頼されないことに注意してください。あなたはそれが存在しないために考慮しなければならないので、いくつかのプロキシやファイアウォールは、完全ヘッダを削除

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

私は、 '!'、あなたが不足していると思います(つまり、2行目が何のためにあるのかです)。このコードは現在、ベータ版とは逆の動作をします。 – Gerben

+1

@Gerben - 上記の修正済み - ありがとうございました! –

関連する問題