我正在使用Apache,并假设“images / sample.jpg”中有一个文件。
使用 .htaccess ,如何在网站上显示并然后阻止直接访问网址(< em>例如,直接网址如“http://www.abc.com/images/sample.jpg”)?
如果可能,我还希望该解决方案能够影响“.htaccess”文件下的所有子文件夹。
附加说明:
在获得低于答案的一天后,我发现所有解决方案在逻辑上都有效,但是Firefox有问题。我的意思是,下面的答案是在每个浏览器上进行测试时给出的解决方案,而不是Firefox。
答案 0 :(得分:3)
这被称为“hotlinking” - 我建议先阅读它,因为它不仅仅是你的.htaccess中的一行或一行代码。这个页面很不错:http://altlab.com/htaccess_tutorial.html
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://i.imgur.com/qX4w7.gif [L]
这将显示来自imgur的图像,但我有时想更进一步,并从我自己的主机托管替代图像 - 例如,如果它是竞争对手,你可以有很多乐趣;)
答案 1 :(得分:1)
使用此代码块来防止热链接:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
答案 2 :(得分:1)
不完全确定,但这应该指导你:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteRule (images/sample.jpg)$ - [R=404,L]
答案 3 :(得分:1)
除了.htaccess规则之外,还有很多可以防止图像的热链接。但是,您希望在htaccess中阻止图像热链接的基础是:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|png|bmp)$ - [F,NC]
答案 4 :(得分:1)
根据您的评论看起来这就是您所需要的:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]
我已经在我的localhost上测试了它,似乎工作正常。