lamp

使用.htaccess防止盗链

2008-07-22

什么是盗链

文件在B服务器上,不在A服务器上,但是A服务器通过技术手段使用了B服务器的文件(文件通常是图片,swf,mp3,pdf,rar等)。

盗链产生的原因

  • 盗链者通过盗链可以减少服务器的硬盘空间与宽带流量,但却提供了盗链者网站本身没有的服务,比如mp3在线播放,flash动画,图片下载等(利益驱动,主动的)
  • 用户使用CMS系统或BBS拷贝其它网站的文章时,通常连同图片等资源一同拷贝,但这些资源通常是使用了绝对路径的方式拷贝(工具限制,被动的)

盗链的危害

  • 被盗链的网站访问速度缓慢甚至经常当机,很多网站因此关闭。
  • 所有网站都盗链,最后没有原创网站了,互联网消失!

使用.htaccess防止盗链

这是一种非常简单的方法,效果也很好,但是只能使用在apache搭建的网站服务器下。

1,在网站根目录下建立.htaccess文件(如果没有)

2,输入下面代码,并保存

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?dreamdu.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?dreamdu2.com [NC]
RewriteRule \.(jpg|png|gif|swf|mp3|pdf)$ http://www.google.cn/intl/zh-CN/images/logo_cn.gif [NC,R,L]

3,上传到服务器

.htaccess防盗链代码说明

RewriteEngine on

代表开启Apache的重写引擎

RewriteCond %{HTTP_REFERER} !^$

禁止所有网站链接

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?dreamdu.com [NC]

允许梦之都链接

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?dreamdu2.com [NC]

允许梦之都二号站链接(通过这个方式可以添加多个允许的网站)

RewriteRule \.(jpg|png|gif)$ http://www.google.cn/intl/zh-CN/images/logo_cn.gif [NC,R,L]

当盗链网站使用被盗链网站文件名后缀为jpg、png、gif的文件时,将显示 http://www.google.cn/intl/zh-CN/images/logo_cn.gif 图片(这个图片可以设计成为版权图片,并打印上自己的网址)

你可能遇到的问题

  • 浏览器会缓存图片,因此你测试的时候应清空缓存。
  • 不要使用自己网站上的图片作为显示盗链的信息图片,比如梦之都使用了梦之都网站的图片做为显示盗链的图片,将形成死循环。

引用

梦之都由于图片不多因此没有防止图片盗链,而且我的blog的图片都是放到了flickr,这样可以减少很多流量,flickr是允许这种方式的,只要你图片链接到他们的网站。

MySQL的#1406 - Data too long for column错误解决方法

2008-04-22

这两天一直在折腾WordPress,升级系统,加入各种插件,之后又在家里又搭好了环境开始调试,一切顺利。再用WordPress Database Backup工具备份后吧gz文件发到了我的邮箱 ,可在公司准备导入备份的文件时却出现了问题,总是报告#1406 - Data too long for column错误,查了些资料,有的说要修改my.ini感觉不太可信。

仔细查看导入的sql文件发现每个表的建立都使用了 ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ;编码使用了latin1,于是改为utf-8。再导入,可以导入了,不过只是一部分,还是不能全部导入,继续观察,发现多数不能导入的都是wp_comments这个表里的内容,而且都是垃圾留言(垃圾留言里面用了好多奇形怪状的符号),删除垃圾留言,导入成功。

最后为大家推荐mysql错误代码的查询网址:
http://dev.mysql.com/doc/refman/5.1/en/error-handling.html 英文的
http://dev.mysql.com/doc/refman/5.1/zh/error-handling.html 中文的

好了,可以继续研究了!:)