詳解IIS中的重寫(xiě)工具下關(guān)于操作重定向URL中的{R:N}與{C:N}使用介紹
URL Rewrite(URL重寫(xiě)工具)作為IIS下較為常用的模塊組件, 提供了重寫(xiě)、重定向、自定義響應(yīng)、中止請(qǐng)求等功能。但是其相關(guān)的中文資料比較缺少,官方倒是有完整和詳細(xì)的英文文檔,之前我在項(xiàng)目中遇到需要設(shè)置重寫(xiě)/重定向URL操作規(guī)則時(shí),對(duì)于范例中的{R:N}和{C:N}規(guī)則就理解的十分辛苦,因此寫(xiě)下本文分享下經(jīng)驗(yàn)。
這里先附上官網(wǎng)的文檔,其實(shí)文檔鏈接在IIS的URL重寫(xiě)模塊的右邊菜單就有:URL Rewrite Module Configuration Reference(URL重寫(xiě)模塊配置參考) ,也可以看這篇URL 重寫(xiě)模塊頁(yè)
R和C表示的是什么意思?
這里先看官方文檔的說(shuō)明:
文檔鏈接地址:Using back-references in rewrite rules
{R:N}和{C:N}主要是使用了正則表達(dá)式的back-references(中文名詞:反向引用/逆向引用/后向引用/向后引用),關(guān)于正則的反向引用這里就不多加說(shuō)明,可以參考這三篇文章:
我們只要知道R表示的是rule patterns(規(guī)則模式,就是匹配URL的模式),C表示的是condition patterns(條件模式,規(guī)則條件的屬性)。{R:N}和{C:N}中的N是指正則表達(dá)式中反向引用所捕獲到的組號(hào),有0至9的組號(hào)。需要注意的是,{R:0}和{C:0}表示全部匹配。其它的比如{R:1}或者{C:1}的組號(hào)是1,所以會(huì)匹配到分組1所捕獲到的內(nèi)容,其他帶組號(hào)的則對(duì)應(yīng)其正則所匹配到的組號(hào)內(nèi)容。
關(guān)于規(guī)則模式和規(guī)則條件,可以參考這兩篇文章
詳解IIS中URL重寫(xiě)工具的規(guī)則條件(Rule conditions)
詳解IIS中URL重寫(xiě)工具的匹配URL-規(guī)則模式(rule patterns)
示例詳解說(shuō)明{R:N}和{C:N}
假設(shè)我們要將地址http://192.168.1.100:8080/Home/TestUrlRewrite做301重定向到http://192.168.1.100:8080/TestUrlRewrite/Index,那么我們IIS中的設(shè)置如下:
1、匹配URL(rule patterns):
上圖中我們?cè)O(shè)置模式的正則表達(dá)式為^(.*?)/?Home(/TesturlRewrite)$,我們點(diǎn)擊打開(kāi)測(cè)試模式,輸入要測(cè)試匹配的URL地址:http://192.168.1.100:8080/Home/TestUrlRewrite,如下圖所示:
由上圖可知,我們成功匹配了測(cè)試的URL,根據(jù)匹配模式的正則,我們一共可以捕獲到3組內(nèi)容,其中{R:0}上面有說(shuō)過(guò)表示的是全部的內(nèi)容,{R:1}捕獲到的是http://192.168.1.100:8080,{R:2}捕獲到的反向引用是/TestUrlRewrite
2、規(guī)則條件(Rule conditions):
這里我們添加了一個(gè)條件過(guò)濾,只匹配192.168.1.100:8080這個(gè)HTTP_HOST主機(jī)。在測(cè)試的時(shí)候只捕獲到一個(gè)反向引用組,即{C:0}:
3、操作規(guī)則(Rule Action):
最后設(shè)置操作規(guī)則,設(shè)置重定向URL為:{R:2}/Index,上面我們已經(jīng)知道{R:2}就是反向引用所捕獲的/TestUrlRewrite,完整重定向的URL地址為:/TestUrlRewrite/Index。這樣就成功實(shí)現(xiàn)了使用反向引用來(lái)進(jìn)行重定向操作。
相關(guān)文章
Win2003和Win2008防火墻導(dǎo)致FTP服務(wù)器不能訪問(wèn)的解決方法
這篇文章主要介紹了Win2003和Win2008防火墻導(dǎo)致FTP服務(wù)器不能訪問(wèn)的解決方法,需要的朋友可以參考下2014-11-11IIS服務(wù)器中 ASP.NET State Service 開(kāi)啟后 Session 仍容易丟失的問(wèn)題終極解決辦法
IIS服務(wù)器中 ASP.NET State Service 開(kāi)啟后 Session 仍容易丟失的問(wèn)題終極解決辦法,碰到此問(wèn)題的朋友可以參考下。2011-07-07遠(yuǎn)程分析win2003 IIS安全設(shè)置
遠(yuǎn)程分析win2003 IIS安全設(shè)置...2007-12-12Windows?IIS服務(wù)器安裝的超詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了Windows?IIS服務(wù)器安裝的超全面教程,文中通過(guò)示例圖片為大家進(jìn)行了全方面講解,有需要的小伙伴可以參考一下2023-09-09windows環(huán)境下用squid代理https(ssl)的方法
這篇文章主要是為大家介紹下windows環(huán)境下用squid代理https(ssl)的方法,需要的朋友可以參考下2013-12-12Win7系統(tǒng)日志提示在沒(méi)有配置的 DNS 服務(wù)器響應(yīng)之后,名稱“域名”的名稱解析超時(shí)的解放方法
用Windows 7而且又偶爾會(huì)關(guān)心一下日志的TX可能會(huì)發(fā)現(xiàn)在網(wǎng)絡(luò)情況不好的情況下經(jīng)常可以發(fā)現(xiàn)類似下圖的系統(tǒng)日志提示“在沒(méi)有配置的 DNS 服務(wù)器響應(yīng)之后,名稱域名的名稱解析超時(shí)”的記錄,同時(shí)你的網(wǎng)絡(luò)連接會(huì)中斷或受限,只有先把網(wǎng)卡禁用再啟用才會(huì)恢復(fù)正常。2015-09-09解決IIS不識(shí)別PUT和DELETE請(qǐng)求
這篇文章介紹了解決IIS不識(shí)別PUT和DELETE請(qǐng)求的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03WIN10下的JDK安裝與配置環(huán)境變量的過(guò)程(詳細(xì)版)
這篇文章主要介紹了WIN10下的JDK安裝與配置環(huán)境變量的常見(jiàn)問(wèn)題分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06win2003 vps IIS6中添加站點(diǎn)并綁定域名的配置方法
這篇文章主要介紹了windows2003 VPS或服務(wù)器中 IIS6中添加站點(diǎn)并綁定域名設(shè)置教程,需要的朋友可以參考下2017-04-04