詳解IIS中URL重寫工具的規(guī)則條件(Rule conditions)
本文結(jié)合官方文檔和相關(guān)示例,詳細(xì)記錄了在IIS中URL重寫工具下的規(guī)則條件(Rule conditions)的相關(guān)說明。規(guī)則條件允許我們通過額外的邏輯規(guī)則來過濾和匹配規(guī)則模式( rule pattern ),所以只有當(dāng)規(guī)則模式的URL匹配成功時(shí),Rule conditions才會(huì)起作用。
先附上官方文檔地址:Rule conditions。下面會(huì)詳細(xì)說明規(guī)則中的各種屬性和設(shè)置。
邏輯分組
邏輯分組只有兩個(gè)選項(xiàng),任意匹配和全部匹配。規(guī)則條件是由多個(gè)條件組成的一個(gè)條件集合,所以最終判斷需要根據(jù)邏輯分組來的設(shè)置來選擇計(jì)算方法。
就如同字面上的意思,如果選擇任意匹配,只要在條件集合中有一個(gè)條件規(guī)則符合匹配,那么整體的規(guī)則條件就是有效的,相當(dāng)于編程中的或運(yùn)算。而如果選擇全部匹配,只有當(dāng)條件集合中的所有規(guī)則全部匹配成功,規(guī)則條件才算是有效的規(guī)則,相當(dāng)于編程中的與運(yùn)算。
匹配類型
按照文檔所說,定義一個(gè)規(guī)則條件主要通過設(shè)置兩個(gè)屬性,即輸入字符串(Input string)和匹配類型(Match type),匹配類型在添加條件的對話框中是通過檢查輸字符串是否選項(xiàng)來設(shè)置的,總共有3種匹配類型,細(xì)分的話則是6種匹配類型:
1、是否是文件,分為是文件和不是文件這兩個(gè)選項(xiàng),可以用來判斷所請求的URL是否為系統(tǒng)文件的物理路徑,默認(rèn)的條件輸入字符串的值(服務(wù)器變量)是{REQUEST_FILENAME}
2、是否是目錄,分為是目錄和不是目錄這兩個(gè)選項(xiàng),可以用來判斷所請求的URL是否為文件目錄的物理路徑,默認(rèn)服務(wù)器變量為{REQUEST_FILENAME}
3、是否與模式匹配,分為與模式匹配和與模式不匹配兩個(gè)選項(xiàng),一旦選擇了這種匹配模式,那么就需要搭配正則表達(dá)式或者通配符進(jìn)行匹配。在添加條件的對話框中,通過設(shè)置模式輸入框來設(shè)置相應(yīng)的正則表達(dá)式或通配符以完成模式匹配。
條件輸入字符串與服務(wù)器變量
條件輸入字符串中的值就是服務(wù)器變量,而具體使用哪些服務(wù)器變量則與匹配類型有關(guān),關(guān)于服務(wù)器變量可以查閱這篇資料:IIS Server Variables
這里我們挑選最常使用的匹配類型:與模式匹配。這種模式最常使用的服務(wù)器變量類型如下:QUERY_STRING、HTTP_HOST、SERVER_PORT、SERVER_PORT_SECURE、REQUEST_URI。
假設(shè)向下面的URL地址發(fā)送一個(gè)請求:http://shiyousan.com/Home/Index?page=1&tid=11,那么這些變量的含義如下:
QUERY_STRING 服務(wù)器變量所包含的是 page=1&tid=11這部分,表示URL的參數(shù)字符串HTTP_HOST 服務(wù)器變量所包含的部分是shiyousan.com,表示所請求的主機(jī)域名SERVER_PORT 服務(wù)器變量所包含的部分是 80,表示服務(wù)器的端口SERVER_PORT_SECURE 服務(wù)器變量所包含的部分是0,HTTPS請求為OFF,表示接受請求的服務(wù)器端口是否為安全端口時(shí),是為1,否則為0,一般來說如果是HTTPS請求則為安全端口,即為1,HTTPS為ON。REQUEST_URI 服務(wù)器變量所包含的部分是/Home/Index?page=1&tid=11,就是除了主機(jī)域名外剩下的URL地址字符串和參數(shù)字符串。范例
根據(jù)上面條件輸入的服務(wù)器變量類型描述,就能大概知道這些服務(wù)器變量如何和我們的匹配模式相結(jié)合使用,這里我們以正則搭配HTTP_HOST來做一個(gè)范例。
假設(shè)當(dāng)前網(wǎng)站綁定了多個(gè)域名,比如shiyousan.com,www.shiyousan.com,daodaodao.shiyousan.com,ywftest.com(意思就是訪問這些域名都是打開同一個(gè)網(wǎng)站)。我們要做一個(gè)301重定向,將shiyousan.com這個(gè)頂級(jí)域名下的所有子域名都重定向到頂級(jí)域名中(這里只是舉例,一般很少這樣做),其他頂級(jí)域名保持不變。
如下圖所示,我們添加了一個(gè)條件模式,條件輸入的服務(wù)器變量為{HTTP_HOST},匹配模式的正則為^(.+)\.shiyousan\.com$。
只要在網(wǎng)站中輸入www.shiyousan.com這樣主機(jī)為shiyousan且?guī)в卸嗉?jí)域名前綴,都會(huì)被強(qiáng)制跳轉(zhuǎn)到頂級(jí)域名中。
相反的由于在條件模式中沒有限制ywftest.com這個(gè)域名,所以使用這個(gè)域名訪問網(wǎng)站就會(huì)發(fā)現(xiàn)URL地址仍然沒有變化。因?yàn)閥wftest.com的主機(jī)無法和我們設(shè)置的條件正則匹配,所以就不會(huì)觸發(fā)對應(yīng)的入站規(guī)則。如果想將ywftest.com這個(gè)域名也實(shí)現(xiàn)上述的重定向功能,我們也只要在添加一條規(guī)則添加即可,并設(shè)置邏輯分組為任意匹配。
其他的服務(wù)器變量也是這樣的道理,比如添加一個(gè)QUERY_STRING的條件模式,那么只有請求的URL地址和所設(shè)置的URL參數(shù)正則匹配,才能觸發(fā)重寫工具所定義的規(guī)則。
相關(guān)文章
iis Win32狀態(tài)數(shù)值(sc-win32-status)說明
在iis的日志里面,有一項(xiàng)是sc-win32-status,這個(gè)的中文名字就是Win32狀態(tài),那么,該狀態(tài)不同的數(shù)值代表什么呢?2008-07-07IIS和.net framework 4.0的安裝順序?qū)е碌膯栴}(重新注冊.net 4.0)
這篇文章主要介紹了IIS和.net framework 4.0的安裝順序?qū)е碌膯栴}(重新注冊.net 4.0),需要的朋友可以參考下2015-09-09WIN2008服務(wù)器命令行安裝和卸載IIS7組件的方法
這篇文章主要介紹了WIN2008服務(wù)器命令行安裝和卸載IIS7組件的方法,需要的朋友可以參考下2019-09-09windows服務(wù)器禁ping怎么打開?服務(wù)器禁ping有什么用
一般企業(yè)為了安全對服務(wù)器都是設(shè)置禁止ping命令的,這樣可以有效避免ping攻擊和掃描,降低服務(wù)器被這類攻擊的風(fēng)險(xiǎn),那么服務(wù)器禁止Ping如何設(shè)置呢?今天給大家分享下禁ping的設(shè)置方法2023-07-07w3wp.exe占用CPU和內(nèi)存問題過高的解決方法
在WINDOWS2003+IIS6下,經(jīng)常出現(xiàn)w3wp的內(nèi)存占用不能及時(shí)釋放,從而導(dǎo)致服務(wù)器響應(yīng)速度很慢,這就是因?yàn)椴糠殖绦驅(qū)е沦Y源吃緊2012-07-07解決IIS“服務(wù)器應(yīng)用程序不可用”的方法匯總
我們在使用IIS的過程中,有時(shí)候會(huì)遇到“服務(wù)器應(yīng)用程序不可用”,網(wǎng)上的解決方法挺多,但是都是各有各的說法,這里結(jié)合實(shí)際經(jīng)驗(yàn),把可用解決方法匯總下。2014-11-11