站内图片防盗链|.htaccess版

Posted by Harid九月 - 23 - 2010 Leave comments

防盗链对于有流量限制的网站来说无疑是非常之重要的,今天写写怎么防盗链(虽然太多的人知道,但是还是写出来吧,备不时之需,哎呀,羞…… )

一开始,我是装了插件来做防盗链的,插件想必大家也都听说过,叫——HotLinkProtection。装过这个插件的童鞋应该知道如果主机是Unix/Linux系统,那么在网站的根目录下的.htaccess里会增加一段该插件生成的代码,也就是这个插件本身也是通过写.htaccess文件达到防盗链效果的。问题就出来了,那么是否可以卸掉这个插件,但是保存其在.htaccess文件里生成的代码来实现同样的效果呢?

于是,我就这么干了,在.htaccess文件里添加上这段代码(具体形式不一样,意思一致),然后添加上自己站点的例外和防盗链图片的文件夹以及重定向的链接。经过测试后,我发现这样做是完全可行的!

这个插件生成的代码如下:

1
2
3
4
5
6
# BEGIN HotLinkProtection
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?timepoet.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
# END HotLinkProtection

将其与原生的文件里的语句整合,在Wordpress原生的那一段里面添加下面一段,当然,你还是可以继续添加你想要的例外和想要保护的文件类型,如:

1
2
3
4
5
6
7
8
9
10
11
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !timepoet.com [NC]
RewriteCond %{HTTP_REFERER} !www.timepoet.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://www.timepoet.com/images/daolian.png [R,NC,L]

不用说,将域名改为你的,文件夹也可以变为你想要保护的文件夹。 OK,这种方法也许不是最简单的,但的确是可行的!

附上我的.htaccess文件最后的这一部分内容,效果见:传送门>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
FileETag none
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !timepoet.com [NC]
RewriteCond %{HTTP_REFERER} !www.timepoet.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.com.hk [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://www.timepoet.com/images/fangdaolian.gif [R,NC,L]
</IfModule>
 
# END WordPress

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《站内图片防盗链|.htaccess版

  1. 🙁
    在Wordpress原生的那一段里面, 这个是指哪里?给个地址,我也想试试。

    • @woiweb, 如果你的主机是Linux或者Unix,如果你根目录有.htaccess文件的话,里面应该有这一段:

      # BEGIN WordPress

      RewriteEngine On
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]

      # END WordPress

  2. 我有个问题,我也试过这种方法,但是我有个插件需要调用图片做缩略图,但是修改.htaccess后缩略图就不会显示了该怎么办?

    • @abx, 不应该啊,你的缩略图也是本站的图片,按理说不应该不会显示的,我的站里不也有缩略图么!什么插件?


分享按钮