本文結(jié)合官方文檔和相關(guān)示例,詳細記錄了在IIS中URL重寫工具下的規(guī)則條件(Rule conditions)的相關(guān)說明。規(guī)則條件允許我們通過額外的邏輯規(guī)則來過濾和匹配規(guī)則模式( rule pattern ),所以只有當規(guī)則模式的URL匹配成功時,Rule conditions才會起作用。
先附上官方文檔地址:Rule conditions。下面會詳細說明規(guī)則中的各種屬性和設(shè)置。
邏輯分組
邏輯分組只有兩個選項,任意匹配和全部匹配。規(guī)則條件是由多個條件組成的一個條件集合,所以最終判斷需要根據(jù)邏輯分組來的設(shè)置來選擇計算方法。
就如同字面上的意思,如果選擇任意匹配,只要在條件集合中有一個條件規(guī)則符合匹配,那么整體的規(guī)則條件就是有效的,相當于編程中的或運算。而如果選擇全部匹配,只有當條件集合中的所有規(guī)則全部匹配成功,規(guī)則條件才算是有效的規(guī)則,相當于編程中的與運算。
匹配類型
按照文檔所說,定義一個規(guī)則條件主要通過設(shè)置兩個屬性,即輸入字符串(Input string)和匹配類型(Match type),匹配類型在添加條件的對話框中是通過檢查輸字符串是否選項來設(shè)置的,總共有3種匹配類型,細分的話則是6種匹配類型:
1、是否是文件,分為是文件和不是文件這兩個選項,可以用來判斷所請求的URL是否為系統(tǒng)文件的物理路徑,默認的條件輸入字符串的值(服務(wù)器變量)是{REQUEST_FILENAME}
2、是否是目錄,分為是目錄和不是目錄這兩個選項,可以用來判斷所請求的URL是否為文件目錄的物理路徑,默認服務(wù)器變量為{REQUEST_FILENAME}
3、是否與模式匹配,分為與模式匹配和與模式不匹配兩個選項,一旦選擇了這種匹配模式,那么就需要搭配正則表達式或者通配符進行匹配。在添加條件的對話框中,通過設(shè)置模式輸入框來設(shè)置相應(yīng)的正則表達式或通配符以完成模式匹配。
條件輸入字符串與服務(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ā)送一個請求:http://shiyousan.com/Home/Index?page=1&tid=11,那么這些變量的含義如下:
QUERY_STRING 服務(wù)器變量所包含的是 page=1&tid=11這部分,表示URL的參數(shù)字符串HTTP_HOST 服務(wù)器變量所包含的部分是shiyousan.com,表示所請求的主機域名SERVER_PORT 服務(wù)器變量所包含的部分是 80,表示服務(wù)器的端口SERVER_PORT_SECURE 服務(wù)器變量所包含的部分是0,HTTPS請求為OFF,表示接受請求的服務(wù)器端口是否為安全端口時,是為1,否則為0,一般來說如果是HTTPS請求則為安全端口,即為1,HTTPS為ON。REQUEST_URI 服務(wù)器變量所包含的部分是/Home/Index?page=1&tid=11,就是除了主機域名外剩下的URL地址字符串和參數(shù)字符串。范例
根據(jù)上面條件輸入的服務(wù)器變量類型描述,就能大概知道這些服務(wù)器變量如何和我們的匹配模式相結(jié)合使用,這里我們以正則搭配HTTP_HOST來做一個范例。
新聞熱點
疑難解答
圖片精選