詳解IIS中的重寫工具下關(guān)于操作重定向URL中的{R:N}與{C:N}使用介紹
URL Rewrite(URL重寫工具)作為IIS下較為常用的模塊組件, 提供了重寫、重定向、自定義響應(yīng)、中止請求等功能。但是其相關(guān)的中文資料比較缺少,官方倒是有完整和詳細(xì)的英文文檔,之前我在項目中遇到需要設(shè)置重寫/重定向URL操作規(guī)則時,對于范例中的{R:N}和{C:N}規(guī)則就理解的十分辛苦,因此寫下本文分享下經(jīng)驗。
這里先附上官網(wǎng)的文檔,其實文檔鏈接在IIS的URL重寫模塊的右邊菜單就有:URL Rewrite Module Configuration Reference(URL重寫模塊配置參考) ,也可以看這篇URL 重寫模塊頁
R和C表示的是什么意思?
這里先看官方文檔的說明:
文檔鏈接地址:Using back-references in rewrite rules
{R:N}和{C:N}主要是使用了正則表達(dá)式的back-references(中文名詞:反向引用/逆向引用/后向引用/向后引用),關(guān)于正則的反向引用這里就不多加說明,可以參考這三篇文章:
我們只要知道R表示的是rule patterns(規(guī)則模式,就是匹配URL的模式),C表示的是condition patterns(條件模式,規(guī)則條件的屬性)。{R:N}和{C:N}中的N是指正則表達(dá)式中反向引用所捕獲到的組號,有0至9的組號。需要注意的是,{R:0}和{C:0}表示全部匹配。其它的比如{R:1}或者{C:1}的組號是1,所以會匹配到分組1所捕獲到的內(nèi)容,其他帶組號的則對應(yīng)其正則所匹配到的組號內(nèi)容。
關(guān)于規(guī)則模式和規(guī)則條件,可以參考這兩篇文章
詳解IIS中URL重寫工具的規(guī)則條件(Rule conditions)
詳解IIS中URL重寫工具的匹配URL-規(guī)則模式(rule patterns)
示例詳解說明{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):

上圖中我們設(shè)置模式的正則表達(dá)式為^(.*?)/?Home(/TesturlRewrite)$,我們點擊打開測試模式,輸入要測試匹配的URL地址:http://192.168.1.100:8080/Home/TestUrlRewrite,如下圖所示:

由上圖可知,我們成功匹配了測試的URL,根據(jù)匹配模式的正則,我們一共可以捕獲到3組內(nèi)容,其中{R:0}上面有說過表示的是全部的內(nèi)容,{R:1}捕獲到的是http://192.168.1.100:8080,{R:2}捕獲到的反向引用是/TestUrlRewrite
2、規(guī)則條件(Rule conditions):

這里我們添加了一個條件過濾,只匹配192.168.1.100:8080這個HTTP_HOST主機(jī)。在測試的時候只捕獲到一個反向引用組,即{C:0}:

3、操作規(guī)則(Rule Action):
最后設(shè)置操作規(guī)則,設(shè)置重定向URL為:{R:2}/Index,上面我們已經(jīng)知道{R:2}就是反向引用所捕獲的/TestUrlRewrite,完整重定向的URL地址為:/TestUrlRewrite/Index。這樣就成功實現(xiàn)了使用反向引用來進(jìn)行重定向操作。

相關(guān)文章
事件查看器 特定權(quán)限設(shè)置未將 COM 服務(wù)器應(yīng)用程序錯誤的解決方法
win2003服務(wù)器下打開事件查看器發(fā)現(xiàn)提示如下錯誤應(yīng)用程序-特定權(quán)限設(shè)置未將 COM 服務(wù)器應(yīng)用程序等錯誤,網(wǎng)上找了下, 發(fā)現(xiàn)如下解決方法。2010-04-04
Win2008 R2 IIS7 PHP 5.4 環(huán)境搭建圖文教程
大家好,有段時間沒有寫東西了,今天為大家?guī)淼氖窃赪indows Server 2008 R2上利用IIS搭建一個運(yùn)行PHP網(wǎng)頁的環(huán)境,接下來就開工吧2013-06-06
lIS報錯:修改iis配置或web.config提示不能在此路徑中使用此配置節(jié)的解決方法
今天在修改iis配置的時候提示錯誤:不能在此路徑中使用此配置節(jié),如果在父級別上鎖定了該節(jié),便會出現(xiàn)這種情況,鎖定是默認(rèn)設(shè)置的等等,其實只要通過下面的步驟設(shè)置一下即可2024-03-03
Win2003 IIS6 使用.net framework 4.0 后默認(rèn)文檔失效解決方案
這篇文章主要介紹了Win2003 IIS6 使用.net framework 4.0 后默認(rèn)文檔失效解決方案,需要的朋友可以參考下2017-03-03
windows系統(tǒng)下node.js環(huán)境配置與安裝教程圖文詳解(詳細(xì)版)
本文分步驟給大家詳細(xì)介紹windows系統(tǒng)下簡單nodejs環(huán)境配置與安裝教程,本文圖文并茂給大家介紹的非常詳細(xì),感興趣的朋友可以參考下2016-11-11
win2003禁止遠(yuǎn)程登錄的設(shè)置方法(圖文)
有時候需要使用一些管理員賬戶來執(zhí)行一些特殊的任務(wù),但是不需要這些用戶來遠(yuǎn)程登錄系統(tǒng),所以這種用戶遠(yuǎn)程登錄方法非常實用,也降低了了服務(wù)器安全方面的風(fēng)險2013-11-11
Windows Server 2019 Install(圖文教程)
這篇文章主要介紹了Windows Server 2019 Install(圖文教程),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-07-07

