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

相关问题