找回密码
 注册账户
查看: 47194|回复: 1

纠正网上 .htaccess 图片防盗链方法的错误

[复制链接]
棋子 发表于 2007-6-14 17:16:22 | 显示全部楼层 |阅读模式
也许并不是错误,只是服务器配置不同造成的个案,仅当做参考吧。



从网上看来的方法说在.htaccess文件中加入如下代码可以防止其他网站盗链图片:



  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^[url]http://blog.51cto.com/.[/url]*$ [NC]
  3. RewriteCond %{HTTP_REFERER} !^[url]http://blog.51cto.com[/url]$ [NC]
  4. RewriteCond %{HTTP_REFERER} !^[url]http://www.51cto.com/.[/url]*$ [NC]
  5. RewriteCond %{HTTP_REFERER} !^[url]http://www.51cto.com[/url]$ [NC]
  6. RewriteRule .*\.(jpg|gif|png)$ /missing.jpg [R,NC]
复制代码



对其方法稍微改进一下(由于博客三级域名的原因)。

  1. RewriteCond %{HTTP_REFERER} !^http://(.)+\.51cto\.com [NC]
  2. RewriteRule .*\.(jpg|gif|png|bmp)$ images/err.gif [R,NC]
复制代码




试用后,发现图片并没有想想像中的转到指定图片,而是红叉。在新窗口中打开图片后发现图片也被认为是盗链,但是很长时间打不开。这时监看服务器负载情况,CPU占用变高,其中一个httpd进程占了大量系统资源。把新窗口关掉,服务器恢复正常。



分析了一下问题原因,RewriteRule .*\.(jpg|gif|png|bmp)$ images/err.gif [R,NC]这句,将所有的图片文件重定向到images/err.gif文件,可是images/err.gif仍然是错误的,他还会再次重定向,反复重定向造成一个死循环。。。后来修改RewriteRule .*\.(jpg|gif|png|bmp)$ images/err.gif [R,NC]中的[R,NC]为[L,NC]。服务器负载正常,盗链的页面上可以显示出错误提示图片,而非前面的红叉。
头像被屏蔽
gr58046576 发表于 2009-2-25 14:56:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册账户

本版积分规则

存档|黑屋|手机|网络实验室 本站服务器由美国合租以及IDCLayer国际数据提供!!!

GMT+8, 2026-6-9 22:06 , Processed in 0.010604 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表