2012-07-29 33 views
0
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_COOKIE} !CookieName= [NC] 
RewriteRule .* http://www.domain.com/index.html [R,L] 

这就是我的.htaccess文件的外观。我的问题: 如果cookie未设置,它仍然允许您查看.jpg文件(我不想发生的)(也可能是其他图像文件,不知道),同时它会重定向到.docx中的index.html。 pptx,.sfk等。所以我想知道如何强制重定向访问图像(至少.jpg,.png,.gif)?.htaccess让我们查看.jpg,同时防止查看他人

+0

我不认为这是最好的方法 - 将图像存储在web根目录之外,然后使用php脚本将它们显示给登录用户(cookie中的cookie检查)。 – 2012-07-29 20:37:22

+0

请注意,用户自己注入cookie是微不足道的。如果您没有检查某些内容,则cookie对服务器所持有的信息有效,但您根本没有添加任何安全性。一个解决方案是在检查凭证后提供一个php文件,例如'showfile.php?FileId = 123'或'showfile.php?FileName = ANC.jpg'。这允许您将真实文件保留在文档根目录之外并正确限制访问 – Basic 2012-07-29 20:37:29

+0

这不会导致重定向循环吗? – 2012-07-29 21:00:18

回答

0

您可以尝试一种热链接防护策略。如果你试图阻止外部访问,比如其他网站使用你的图片。

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://mysite.com/nolinking.gif [L] 

,或者你可以成为一个403错误,而不是..

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F] 

,但在所有你可以从长远来看自己的网站上使用的图像,如果你尝试其他方法碰上冲突。我不知道你试图完成什么,所以我只是在猜测。