1. 程式人生 > >IIS防盜鏈:ISAPI Rewrite圖片防盜鏈規則寫法

IIS防盜鏈:ISAPI Rewrite圖片防盜鏈規則寫法

來個小解:
第一行通過RewriteCond的HOST定義其下的規則所適用的請求主機範圍。
第二行通過RewriteCond的Referer定義規則適用的請求來源地址,我們都知道任何通過網際網路方式訪問網站都會留下Referer的痕跡,就好像我們在IIS日誌裡看到的一樣。這裡的(?!http://\1.*).*意思就是判斷所有通過http協義發來的請求,都要應用規則。
第三行通過RewriteRule定義防盜鏈檔案的字尾,這裡僅是圖片字尾,需要的可以新增mp3,rar等其它所有後綴。後面的/block.gif表示如果遇上這些字尾的檔案被盜鏈後的轉向,這裡轉向/根目錄的block.gif,可以是HTML等任何檔案。如果只想某個資料夾下面的檔案不被盜鏈,只需要加上路徑就可以。例如不想images和pic目錄下的檔案被盜,但其它可以。就要改寫成:
RewriteRule (/images/|/pic/).*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
這種情況主要是有些站長在別人友情連結裡的圖片地址是在自己這的。
最後面的[I,O,N],I表示不區分大小寫,O表示對URL進行標準化,可能是用來處理Unicode編碼的地址(例如包含中文的URL)以及QueryString的內容,N表示重新從站點請求檔案而不是從本地快取讀取檔案,目的是防止當用戶訪問了盜你鏈的網站後,再回到你的網站也出現盜鏈提示。
提示,由於此規則是通過Referer來獲取帶有http://字樣的地址進行過濾,因此它無法防範其它協議的盜鏈,比如迅雷下載。但通過任何瀏覽器直接訪問,只要是HTTP協義的,通殺。
以上關於RewriteCond和RewriteRule的作用僅是本人的土法理解,歡迎在這方面有專業研究的朋友在評論中指正,以免誤導,另外如果遇到isapi-rewrite版本問題,只要保*後面的正則式寫法正確就行。
二、排除性防盜鏈寫法