本文結(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ù)字符串。范例
新聞熱點(diǎn)
疑難解答
圖片精選