真正可用的IIS的ISAPI-Rewrite偽靜態(tài)URL圖片防盜鏈規(guī)則寫法
更新時間:2010年07月14日 22:45:58 作者:
本規(guī)則支持白名單排除式防盜鏈,搜索引擎友好不屏蔽,被盜鏈后的錯誤提示轉(zhuǎn)向,支持各種文件類型,經(jīng)作者親驗真的能用
網(wǎng)站程序的URL偽裝法、服務器端的收費插件法和ISAPI-REWRITE的規(guī)則過濾法等,考慮自身網(wǎng)站結(jié)構和錢包的困難問題,最終選擇了后者,即現(xiàn)在流行用來做偽靜態(tài)的ISAPI Rewrite書寫規(guī)則來實現(xiàn)
經(jīng)測試四種情況正常,即站內(nèi)鏈接正常,白名單里的鏈接正常,盜鏈者鏈接屏蔽,搜索引擎鏈接正常。
詳細如下;
一、完全屏蔽所有盜鏈來源的寫法(如已有其它規(guī)則,則置于已有規(guī)則的上面)
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
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表示如果遇上這些后綴的文件被盜鏈后的轉(zhuǎn)向,這里轉(zhuǎn)向/根目錄的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èi)容,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]
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)則不再進行接下去的匹配
\ 表示轉(zhuǎn)義符號,比如網(wǎng)址中的.是規(guī)則內(nèi)置的運算符號,要把它通過\轉(zhuǎn)義成字符。
| 表示或者,用于連接多種可能
經(jīng)測試四種情況正常,即站內(nèi)鏈接正常,白名單里的鏈接正常,盜鏈者鏈接屏蔽,搜索引擎鏈接正常。
詳細如下;
一、完全屏蔽所有盜鏈來源的寫法(如已有其它規(guī)則,則置于已有規(guī)則的上面)
復制代碼 代碼如下:
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|jpeg|png|bmp) /block.gif [I,O,N]
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表示如果遇上這些后綴的文件被盜鏈后的轉(zhuǎn)向,這里轉(zhuǎn)向/根目錄的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èi)容,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]
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)則不再進行接下去的匹配
\ 表示轉(zhuǎn)義符號,比如網(wǎng)址中的.是規(guī)則內(nèi)置的運算符號,要把它通過\轉(zhuǎn)義成字符。
| 表示或者,用于連接多種可能
相關文章
Win2008 R2下Server Core常用命令小結(jié)
這篇文章主要介紹了Windows Server 2008 R2下Server Core的一些常用命令,需要的朋友可以參考下2013-06-06IIS “另一個程序正在使用此文件,進程無法訪問?!卞e誤提示的解決辦法
用IIS管理器啟動網(wǎng)站時,出現(xiàn)“另一個程序正在使用此文件,進程無法訪問?!钡腻e誤提示。說明 此服務器的tcp 80端口已打開。一般情況下,可能是有另一個WEB服務已啟動,它打開了80端口,另一種可能就是某個軟件打開了80端口。2009-10-10iis6 無法訪問網(wǎng)站_IIS重啟無效(重啟服務器才正常 Connections_Refused引起)
最近網(wǎng)站經(jīng)常間歇性罷工,怎么重啟IIS都無法使用,一定要把服務器重新啟動才可正常;可是重啟服務器會影響用戶的日常運作。如何解決才好能,頭痛死了;查看Web日志,發(fā)現(xiàn)一直是Connections_Refused,嘗試了多種方法,最終找到了以下解決方案,真是開心2017-03-03阿里云云服務器Windows 2008下IIS添加網(wǎng)站綁定域名圖文教程
這篇文章主要介紹了阿里云云服務器Windows 2008下IIS添加網(wǎng)站綁定域名圖文教程,需要的朋友可以參考下2014-09-09護衛(wèi)神 主機管理系統(tǒng)使用說明(主機管理)
這篇文章主要介紹了護衛(wèi)神 主機管理系統(tǒng)使用說明,主機管理的相關資料,需要的朋友可以參考下2015-01-01通過windows自帶的系統(tǒng)監(jiān)視器來查看IIS并發(fā)連接數(shù)(perfmon.msc)
如果要想知道確切的當前網(wǎng)站IIS連接數(shù)的話,最有效的方法是通過windows自帶的系統(tǒng)監(jiān)視器來查看。這正是本文要介紹的方法2013-03-03