IIS真正能用的ISAPI-Rewrite圖片防盜鏈規(guī)則寫法
更新時間:2012年01月29日 20:42:33 作者:
經(jīng)過惡補正則表達式相關教程并對前輩們留下的規(guī)則進行修改后,以下ISAPI Rewrite已經(jīng)在我的服務器上正常運作
通過G.CN和B.CN搜索后得出了幾種不同的方案,例如網(wǎng)站程序的URL偽裝法、服務器端的收費插件法和ISAPI-REWRITE的規(guī)則過濾法等,考慮自身網(wǎng)站結構和錢包的困難問題,最終選擇了后者,即現(xiàn)在流行用來做偽靜態(tài)的ISAPI Rewrite書寫規(guī)則來實現(xiàn)我的防盜鏈“夢想”。
為什么說是夢想呢?首先表示惋惜,懶人我搜來了一大票經(jīng)過無數(shù)次轉載而來的文章,把現(xiàn)呈的代碼應用后發(fā)現(xiàn)要么根本不起作用,要么就是效果達不到我想要的,幾經(jīng)周折后終于把這原本認為可以輕易借鑒照搬的防盜鏈給完成了,恨那些只會轉載和偽原創(chuàng)的站長們,自己也不試試就拿來填充,害了多少人浪費了大把的時間。
經(jīng)過惡補正則表達式相關教程并對前輩們留下的規(guī)則進行修改后,以下ISAPI Rewrite已經(jīng)在我的服務器上正常運作。
經(jīng)測試四種情況正常,即站內鏈接正常,白名單里的鏈接正常,盜鏈者鏈接屏蔽,搜索引擎鏈接正常。
詳細如下;
一、完全屏蔽所有盜鏈來源的寫法(如已有其它規(guī)則,則置于已有規(guī)則的上面)
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
老板,來個小解:
第一行通過RewriteCond的HOST定義其下的規(guī)則所適用的請求主機范圍。
第二行通過RewriteCond的Referer定義規(guī)則適用的請求來源地址,我們都知道任何通過互聯(lián)網(wǎng)方式訪問網(wǎng)站都會留下Referer的痕跡,就好像我們在IIS日志里看到的一樣。這里的(?!http://\1.*).*意思就是判斷所有通過http協(xié)義發(fā)來的請求,都要應用規(guī)則。
第三行通過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表示不區(qū)分大小寫,O表示對URL進行標準化,可能是用來處理Unicode編碼的地址(例如包含中文的URL)以及QueryString的內容,N表示重新從站點請求文件而不是從本地緩存讀取文件,目的是防止當用戶訪問了盜你鏈的網(wǎng)站后,再回到你的網(wǎng)站也出現(xiàn)盜鏈提示。
提示,由于此規(guī)則是通過Referer來獲取帶有http://字樣的地址進行過濾,因此它無法防范其它協(xié)議的盜鏈,比如迅雷下載。但通過任何瀏覽器直接訪問,只要是HTTP協(xié)義的,通殺。
以上關于RewriteCond和RewriteRule的作用僅是本人的土法理解,歡迎在這方面有專業(yè)研究的朋友在評論中指正,以免誤導,另外如果遇到isapi-rewrite版本問題,只要保證后面的正則式寫法正確就行。
二、排除性防盜鏈寫法
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteCond Referer: (?!http://(.*)(\.baidu\.com|\.google\.com|\.google\.cn|\.g\.cn|\.gougou\.com|\.soso\.com|\.sogou\.com|\.youdao\.com|\.bing\.com|\.yahoo\.com|\.yahoo\.cn|\.eojoo\.com)).*
RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
老板,來個小解:
第一行同上
第二行同上
第三行通過正則表達式對第二行中的請求協(xié)義地址進行過濾,這里按上面的寫法,過濾了所有流行的搜索引擎,當然也包括你自己的站,或是你同臺服務器其它的站。每個不同的域名寫法是\.baidu\.com,多個有|號相隔。如果是IP則這樣寫100\.100\.100\.100
第四行同上
這樣說明應該不難理解吧,直接拿去用,按著原有格式改。
規(guī)則中出現(xiàn)的正則表達式符號小解:
. 表示匹配除換行符以外的任意字符
+ 表示前面的字符可以出現(xiàn)一到任意多次
* 表示前面的字符可以出現(xiàn)零到任意多次
() 表示一個表達組,可以拿它和加減乘除法一起理解
?! 表示斷言這個符號后面的字符如果出現(xiàn)則不再進行接下去的匹配
\ 表示轉義符號,比如網(wǎng)址中的.是規(guī)則內置的運算符號,要把它通過\轉義成字符。
| 表示或者,用于連接多種可能
通過以上這“亂七八糟”的符號,竟然組成了如此強大的規(guī)則,感嘆!
為什么說是夢想呢?首先表示惋惜,懶人我搜來了一大票經(jīng)過無數(shù)次轉載而來的文章,把現(xiàn)呈的代碼應用后發(fā)現(xiàn)要么根本不起作用,要么就是效果達不到我想要的,幾經(jīng)周折后終于把這原本認為可以輕易借鑒照搬的防盜鏈給完成了,恨那些只會轉載和偽原創(chuàng)的站長們,自己也不試試就拿來填充,害了多少人浪費了大把的時間。
經(jīng)過惡補正則表達式相關教程并對前輩們留下的規(guī)則進行修改后,以下ISAPI Rewrite已經(jīng)在我的服務器上正常運作。
經(jīng)測試四種情況正常,即站內鏈接正常,白名單里的鏈接正常,盜鏈者鏈接屏蔽,搜索引擎鏈接正常。
詳細如下;
一、完全屏蔽所有盜鏈來源的寫法(如已有其它規(guī)則,則置于已有規(guī)則的上面)
復制代碼 代碼如下:
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
老板,來個小解:
第一行通過RewriteCond的HOST定義其下的規(guī)則所適用的請求主機范圍。
第二行通過RewriteCond的Referer定義規(guī)則適用的請求來源地址,我們都知道任何通過互聯(lián)網(wǎng)方式訪問網(wǎng)站都會留下Referer的痕跡,就好像我們在IIS日志里看到的一樣。這里的(?!http://\1.*).*意思就是判斷所有通過http協(xié)義發(fā)來的請求,都要應用規(guī)則。
第三行通過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表示不區(qū)分大小寫,O表示對URL進行標準化,可能是用來處理Unicode編碼的地址(例如包含中文的URL)以及QueryString的內容,N表示重新從站點請求文件而不是從本地緩存讀取文件,目的是防止當用戶訪問了盜你鏈的網(wǎng)站后,再回到你的網(wǎng)站也出現(xiàn)盜鏈提示。
提示,由于此規(guī)則是通過Referer來獲取帶有http://字樣的地址進行過濾,因此它無法防范其它協(xié)議的盜鏈,比如迅雷下載。但通過任何瀏覽器直接訪問,只要是HTTP協(xié)義的,通殺。
以上關于RewriteCond和RewriteRule的作用僅是本人的土法理解,歡迎在這方面有專業(yè)研究的朋友在評論中指正,以免誤導,另外如果遇到isapi-rewrite版本問題,只要保證后面的正則式寫法正確就行。
二、排除性防盜鏈寫法
復制代碼 代碼如下:
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteCond Referer: (?!http://(.*)(\.baidu\.com|\.google\.com|\.google\.cn|\.g\.cn|\.gougou\.com|\.soso\.com|\.sogou\.com|\.youdao\.com|\.bing\.com|\.yahoo\.com|\.yahoo\.cn|\.eojoo\.com)).*
RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
老板,來個小解:
第一行同上
第二行同上
第三行通過正則表達式對第二行中的請求協(xié)義地址進行過濾,這里按上面的寫法,過濾了所有流行的搜索引擎,當然也包括你自己的站,或是你同臺服務器其它的站。每個不同的域名寫法是\.baidu\.com,多個有|號相隔。如果是IP則這樣寫100\.100\.100\.100
第四行同上
這樣說明應該不難理解吧,直接拿去用,按著原有格式改。
規(guī)則中出現(xiàn)的正則表達式符號小解:
. 表示匹配除換行符以外的任意字符
+ 表示前面的字符可以出現(xiàn)一到任意多次
* 表示前面的字符可以出現(xiàn)零到任意多次
() 表示一個表達組,可以拿它和加減乘除法一起理解
?! 表示斷言這個符號后面的字符如果出現(xiàn)則不再進行接下去的匹配
\ 表示轉義符號,比如網(wǎng)址中的.是規(guī)則內置的運算符號,要把它通過\轉義成字符。
| 表示或者,用于連接多種可能
通過以上這“亂七八糟”的符號,竟然組成了如此強大的規(guī)則,感嘆!
相關文章
IIS中301重定向跳轉web.config規(guī)則和http重定向模塊的實現(xiàn)教程
301跳轉對于搜索引擎而言,便是告訴搜索引擎:“此url地址已經(jīng)永久的進行跳轉到了‘XXX’url地址?!倍鴮τ谟脩舳?,301跳轉后的網(wǎng)站,在用戶使用的時候,輸入舊的地址,會自動跳轉到新的地址。在IIS中實現(xiàn)301重定向有web.config規(guī)則和IIS中的http重定向模塊兩種方式。2023-04-04win7下Apache2.2+Tomcat7.0整合配置詳解
這篇文章主要介紹了win7下Apache2.2+Tomcat7.0整合配置詳解,需要的朋友可以參考下2016-10-10IIS和.net framework 4.0的安裝順序導致的問題(重新注冊.net 4.0)
這篇文章主要介紹了IIS和.net framework 4.0的安裝順序導致的問題(重新注冊.net 4.0),需要的朋友可以參考下2015-09-09Windows Server 2019 Web服務器配置 IIS站點配置
介紹了 Windows Web 服務器 IIS 的進階配置,包括配置主目錄,默認文檔,進行訪問限制(限制帶寬的使用和限制連接數(shù)以及連接超時),需要的朋友可以參考下2023-05-05Windows Server 2012 Iis8 php環(huán)境配置方法
最近微軟推出了win2012服務器操作系統(tǒng),是不是速度快了點,win2008還沒推出歷史舞臺,win2008還沒學會使用呢,有空可以把系統(tǒng)效率提高點秒殺linux吧2013-09-09