圖片防止盜鏈也是個老生常談的話題,然而,似乎總是陷入道高一尺魔高一丈的無限死循環中。盜鏈者往往千方百計,絞盡腦汁地去實現圖片的轉載。
對於一個圖片站來說,盜鏈更是一種災難。流量損失不說,無形中也大大加重了服務器的負載。
本文中,筆者分別提供apache和nginx兩款常用的web服務器的防止盜鏈設置。希望能給各位多點啟發。
#apache的防止盜鏈設置,可以在.htaccess中設置
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpg|gif|bmp|png)$ /images/fangzhidaolian.jpg [L]
上面這樣的設置會將不是來自於本站的圖片引用全部重定向到/images/fangzhidaolian.jpg 。這樣的設置太過於嚴格了,你會限制住從rss中訪問過來的用戶。因此,我們要對rss和搜索引擎開放。
#允許搜索引擎和RSS服務器訪問
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?google\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?google\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?bing\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?bing\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yahoo\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?yahoo\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?xianguo\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?zhuaxia\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?youdao\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?(.*\.)?baidu\.(.+)/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|png)$ /transparent.gif [L]
nginx的防止盜鏈設置似乎更簡單一些。
#nginx防止盜鏈設置
location ~* \.(jpg|jpeg|png|gif|css|js|swf|mp3|avi|flv|xml|zip|rar)$ {
valid_referers none blocked *.yoursite.com *.baidu.com
*.feedsky.com *.google.com *.xiaoguo.com *.zhuaxia.com;
if ( $invalid_referer )
return /images/fangzhidaolian.jpg;
}