.htaccess 設置:雖然理論上而言,在Apache中,可以針對每個目錄分別設置 .htaccess ,通過權限的繼承與覆蓋可以實現相當復雜的功能。不過,過多的 .htaccess 往往會增加管理的難度,有時候百密難免有一疏,修改 .htaccess 稍有遺漏便可能造成網站出現問題。
默認情況下禁止其他網站盜鏈:對圖片文件而言,當其他網站使用 盜鏈時自動重定向至類似右圖所示的圖片,聲明版權及宣傳您的網站。當然,從降低對服務器帶寬占用的角度考慮,這個圖片文件不能過大,您也可以簡單地拒絕其訪問,讓其網頁上圖片位置以紅“x”號代替。
允許特定訪問來源:單純針對圖片文件來說,事實上也不可能禁止所有除您自身網站之外的其他訪問,比如說Google,如果您希望通過Google圖片搜索獲得一定訪問的話,必須讓其能夠正確讀取真正的圖片文件,再如應能夠讓RSS訂閱用戶看到feed中的圖片,這就要求允許來自bloglines等的訪問。
允許特定目錄下的文件被外部網站使用:完全禁止外部網站有時會帶來不便,很多時候,我們自己也可能需要在外部網站使用部分文件。當然,放入這些目錄的文件要有一定限制,不然,便失去設置防盜鏈的意義了。
設置 .htaccess 禁止圖片盜鏈
下面即為博客學堂禁止圖片盜鏈的 .htaccess 設置部分:
1 2 3 | RewriteEngine on RewriteCond %{REQUEST_URI} ^/(allow1|allow2) RewriteRule ^.*$ - [L] |
首先,設置允許可“盜鏈”即外部網站可以使用的文件所處目錄,上面我們設置了兩個目錄,分別為allow1與allow2,當然,如果您只有一個目錄的話,可以將其改為:
1 | RewriteCond %{REQUEST_URI} ^/allow1 |
接下來判斷是否為圖片文件:
1 | RewriteCond %{REQUEST_FILENAME} \.(gif|jpeg|png|swf|flv|zip|rar|txt|exe)$ [NC] |
您也可以根據自己的需要設置更多的文件類型。
1 | RewriteCond %{HTTP_REFERER} !^$ |
上面這一行意在允許空“HTTP_REFERER”的訪問,即允許用戶在瀏覽器地址欄中直接輸入圖片地址時圖片文件的顯示。一般而言,這是可選的,不過,建議這么設置,如果強迫必須具有“HTTP_REFERER”才能訪問,可能會帶來某些問題,比如說在用戶通過代理服務器訪問時。
1 2 3 4 5 | RewriteCond %{HTTP_REFERER} !blogsdiy\.org [NC] RewriteCond %{HTTP_REFERER} !google\.com [NC] RewriteCond %{HTTP_REFERER} !baidu\.com [NC] RewriteCond %{HTTP_REFERER} !bloglines\.com [NC] RewriteCond %{HTTP_REFERER} !feedburner\.com [NC] |
設置允許訪問的HTTP來源,包括博客學堂自身、Google、Baidu、Bloglines、Feedburner等。
1 | RewriteRule (.*) /allow1/leech.gif [R,NC,L] |
將不滿足上述條件的訪問重定向至leech.gif。您可能已經注意到,leech.gif位于允許“盜鏈”的目錄allow1下,這一點很重要,不然,您的警告信息圖片將無法在對方網站上顯示。
如此,即實現了我們預先設定的防止圖片盜鏈目標。
其他類型文件的防盜鏈設定
如果您的網站上存在其他類似體積較大較耗費帶寬的文件如flash、mp3被其他網站盜鏈,可以同樣采取上述策略,比如說,對Flash文件,可用類似如下的設置:
1 2 3 4 5 6 7 | RewriteCond %{REQUEST_URI} ^/allow1 RewriteRule ^.*$ - [L]RewriteBase / RewriteCond %{REQUEST_FILENAME} \.swf$ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !blogsdiy\.org [NC] (……其他允許訪問來源) RewriteRule (.*) /allow1/leech.swf [R,NC,L] |
當然,需要事先創建一個聲明版權信息的flash文件“leech.swf”。其他諸如防止mp3文件、壓縮文件(zip或rar)盜鏈的設置與此類似,不再贅述。
收藏自:塵色記憶