4

我正在使用 Apache,假设“images/sample.jpg”中有一个文件。

  • 使用.htaccess,我怎样才能让它出现在网站上,然后防止通过 url 直接访问(例如,直接 url,如“http://www.abc.com/images/sample.jpg”)?

  • 如果可能的话,我还希望解决方案影响“.htaccess”文件下的所有子文件夹。


附加说明:
在得到以下答案一天后,我发现所有解决方案在逻辑上都有效,但 Firefox 存在问题。我的意思是,下面的答案在每个浏览器上进行测试时给出了解决方案,但在 Firefox 上没有。

4

5 回答 5

3

这被称为“热链接”——我建议先阅读它,因为它不仅仅是一行或 .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 的图像,但是我有时喜欢更进一步并托管来自我自己的主机的替代图像 - 例如,如果它是竞争对手,你可以有很多乐趣;)

于 2012-04-19T19:46:55.017 回答
1

使用这段代码来防止盗链:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC] 
RewriteRule \.(gif|jpg)$ - [F]

这可以帮助你:http ://www.selfseo.com/story-18469.php

于 2012-04-19T19:50:09.033 回答
1

不完全确定,但这应该可以指导您:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteRule (images/sample.jpg)$ - [R=404,L]
于 2012-04-19T19:50:55.873 回答
1

与 .htaccess 规则相比,防止图像盗链的措施还有很多。但是,您希望在 htaccess 中防止图像盗链的基础是:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$      [NC]
RewriteRule .*\.(jpg|jpeg|png|bmp)$ - [F,NC]

Apache 重写指南

于 2012-04-19T20:47:37.467 回答
1

根据您的评论,这就是您所需要的:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]

我已经在我的本地主机上对其进行了测试,它似乎工作正常。

于 2012-04-19T20:47:54.527 回答