防盜鏈網站圖片顧名思義就是防止外部網站盜用我們網站的圖片,它的作用就是防止其他人在其他的博客,空間網站裡面貼上我們網站的圖片從而導致訪問者們沒有進入我們的網站,但是還是耗費了我們網站空間的流量。這是不是非常的不爽?好了,下面我們就來看看如何利用.htaccess來防止別人盜鏈我們網站的圖片吧!
利用.htaccess來防盜鏈圖片其實很簡單,只要你懂得.htaccess規則,也就一句話的事兒。下面我們來看一個完整的例子:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !phpernote.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !sogou.com [NC] RewriteCond %{HTTP_REFERER} !soso.com [NC] RewriteCond %{HTTP_REFERER} !youdao.com [NC] RewriteCond %{HTTP_REFERER} !yahoo.cn [NC] RewriteRule ^uploadfiles/(.*)\.(gif|jpg|png)$ http://www.phpernote.com/images/loading.gif [L]
下面對以上這段代碼做一下詳細的解釋:
RewriteEngine On
url重寫引擎開關,如果設為off,則任何重寫規則定義將不被應用,該開關的另一好處就是如果為了臨時拿掉重寫規則,則改為off再重啟動Apache即可,不必將下面一條條的重寫規則注釋掉。注意這條語句盡量寫在文件的頭一行。
RewriteBase /
這條語句的作用是如果在下面的rewriterule定義中被重寫後的部分(此處為文件名index.html)。如果前面沒有/,則是相對目錄。一般直接設置為 / 意思就是根目錄。
允許通過空的“HTTP_REFERER”的訪問,即在用戶在浏覽器地址欄中直接輸入圖片地址的情況下圖片是可以顯示的。一般而言,這是可選的,不過,建議做如上設置,否則如果強迫必須具有“HTTP_REFERER”才能訪問的話,可能會帶來某些問題,比如說在用戶通過代理服務器訪問時。 RewriteCond %{HTTP_REFERER} !phpernote.com [NC] 這裡設置的是允許訪問的HTTP來源,這裡包括我們自己的網站、google.com、baidu.com、sogou.com、soso.com、youdao.com、yahoo.cn。這也是為了讓搜索引擎能正常的抓取我們的網站圖片做考慮。 RewriteRule .*\.(gif|jpg|png|bmp)$ http://www.phpernote.com/change.gif [R,NC,L] OK,這裡就是設置防盜鏈的規則了。這裡的設置是讓所有盜鏈本網站的 jpg、gif、png、bmp 等圖片文件的網頁,一律顯示以 http://www.phpernote.com/change.gif 這個文件替代顯示。特別需要注意的是:替換顯示的圖片不要放在設置防盜鏈的目錄中或者包含在設置了防盜鏈的目錄中,並且該圖片文件體積越小越好。當然你也可以不設置替換圖片,使用如下這樣的規則,盜鏈的網站的圖片將顯示一篇空白 RewriteRule .*\.(gif|jpg|png|bmp)$ – [F] 另外如果你不明白上面的規則後面的中括號裡面的 NC F L 的字符含義的話,請參照本站:.htaccess 語法參數說明 好了,經過以上的設置,所有盜鏈你網站的圖片文件的網站,都將會因為這種不友好的顯示而放棄盜鏈了,這在一定程度上減少了你的空間服務器不必要的流量,是一件值得去做的事情。
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !sogou.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !youdao.com [NC]
RewriteCond %{HTTP_REFERER} !yahoo.cn [NC]