研究了几天的Apache下的防盗链重写, 还是小有成就的,不管怎样,可以实现这个功能了!
下面的就是防盗链的重写规则:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(Error|404)/
RewriteCond %{HTTP_REFERER} !^http://(.)+\.abc\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://abc\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.baidu\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://baidu\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.baidu\.cn [NC]
RewriteCond %{HTTP_REFERER} !^http://baidu\.cn [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.google\.cn [NC]
RewriteCond %{HTTP_REFERER} !^http://google\.cn [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.google\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://google\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.soso\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://soso\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.bing\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://bing\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.yahoo\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://yahoo\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.sogou\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://sogou\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.youdao\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://youdao\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(.)+\.msn\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://msn\.com [NC]
RewriteRule .*\.(jpg|gif|png|bmp|mp3|swf|mp4|txt|rar|zip)$ http://www\.abc\.com/Error/404.gif [R,L,NC]
刚开始在写的时候犯了一个错,就是没有注意转义字符“\”,导致怎么也不能实现重写,后来几经盘查,终于发再了这个错误。再写之,一切OK!
上面的代码我解释下:
RewriteEngine on:是开启功能
RewriteCond %{REQUEST_URI} !^/(Error|404)/ :表示在htacces所在根目录下Error和404两个目录是不受htacces防盗链保护的
RewriteCond %{HTTP_REFERER} !^http://(.)+\.abc\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://abc\.com [NC]
……
上述这表示哪些域名是可以正常访问,不被规则禁止,当然你自己的网站的域名必须要在此列,不然自己都不能访问图片了
RewriteRule .*\.(jpg|gif|png|bmp|mp3|swf|mp4|txt|rar|zip)$ http://www\.abc\.com/Error/404.gif [R,L,NC]
这个表示用规则外的域名访问触及到以上格式的文件,将被禁止访问,并跳转到http://www\.abc\.com/Error/404.gif,提示错误。
发表评论