这是我对同一问题的第二篇文章 . 因为上一篇文章需要更多的例子 .
好吧再说一遍,我正在使用Apache,我有一个示例Web文件夹(在我的Localhost上),如:
在该文件夹中,文件将是:
-
index.html
-
sample.jpg
-
.htaccess
“index.html”将简单地包括:
<html>
<body>
<img src="sample.jpg" />
</body>
</html>
当我在 http://localhost/test/
运行网站时,会在页面上显示图像`sample.jpg' .
THEN THE PROBLEM HERE IS :
- 我想阻止图片直接在网址栏中显示为
http://localhost/test/sample.jpg
.
注意:
在获得以下答案的一天后,我发现所有解决方案在逻辑上都有效,但是Firefox有问题 . 我的意思是,下面的答案是在每个浏览器上测试时提供解决方案,但不是在Firefox上测试 .
4 回答
请尝试以下方法:
如果直接访问图像,则返回403,但允许它们在现场显示 .
Note: 当您打开带有图像的某个页面然后复制该图像's path into the address bar you can see that image, it is only because of the browser's缓存时,实际上该图像尚未从服务器加载(来自Davo,下面的完整评论) .
罗西波夫的规则很有效!
我在实时网站上使用它来显示空白或特殊消息;)代替对文件的直接访问尝试我宁愿保护一点不被直接查看 . 我觉得它比403 Forbidden更有趣 .
因此,采用rosipov规则将任何直接请求重定向到{gif,jpg,js,txt}文件到'messageforcurious':
我认为这是一种礼貌的方式,不允许直接访问,例如,像xml,javascript这样的CMS敏感文件......考虑到安全性:对于现在所有这些机器人潦草的网页,我想知道他们的算法是什么来自我的'messageforcurious' .
根据您的评论看起来这就是您所需要的:
我已经在我的localhost上测试了它,它似乎工作正常 .
首先,找到主apache的配置文件httpd.conf所在的位置 . 如果您使用Debian,它应该在这里:
/etc/apache/httpd.conf
. 使用像Vim或Nano这样的文件编辑器打开这个文件,找到如下所示的行:然后删除单词索引并保存文件 . 该行应如下所示:
完成后,重启apache(例如在Debian中重启/etc/init.d/apache) . 而已!