源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}使用介绍

  • 时间:2022-11-16 10:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}使用介绍
URL Rewrite(URL重写工具)作为IIS下较为常用的模块组件, 提供了重写、重定向、自定义响应、中止请求等功能。但是其相关的中文资料比较缺少,官方倒是有完整和详细的英文文档,之前我在项目中遇到需要设置重写/重定向URL操作规则时,对于范例中的{R:N}和{C:N}规则就理解的十分辛苦,因此写下本文分享下经验。 这里先附上官网的文档,其实文档链接在IIS的URL重写模块的右边菜单就有:[url=http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference]URL Rewrite Module Configuration Reference(URL重写模块配置参考) [/url] ,也可以看这篇URL 重写模块页 R和C表示的是什么意思? 这里先看官方文档的说明:
Back-references to condition patterns are identified by {C:N} where N is from 0 to 9. Back-references to rule patterns are identified by {R:N} where N is from 0 to 9. Note that for both types of back-references, {R:0} and {C:0}, will contain the matched string.
文档链接地址:[url=http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Using_back-references_in_rewrite_rules]Using back-references in rewrite rules[/url] {R:N}和{C:N}主要是使用了正则表达式的back-references(中文名词:反向引用/逆向引用/后向引用/向后引用),关于正则的反向引用这里就不多加说明,可以参考这三篇文章: [url=https://msdn.microsoft.com/zh-cn/library/ksz2azbh(VS.80).aspx]反向引用[/url][url=http://deerchao.net/tutorials/regex/regex.htm]后向引用[/url][url=https://technet.microsoft.com/zh-cn/library/ee215190(v=ws.10).aspx]Using Back References[/url] 我们只要知道R表示的是rule patterns(规则模式,就是匹配URL的模式),C表示的是condition patterns(条件模式,规则条件的属性)。{R:N}和{C:N}中的N是指正则表达式中反向引用所捕获到的组号,有0至9的组号。需要注意的是,{R:0}和{C:0}表示全部匹配。其它的比如{R:1}或者{C:1}的组号是1,所以会匹配到分组1所捕获到的内容,其他带组号的则对应其正则所匹配到的组号内容。 关于规则模式和规则条件,可以参考这两篇文章 [url=http://www.1sucai.cn/article/108682.htm]详解IIS中URL重写工具的规则条件(Rule conditions)[/url] [url=http://www.1sucai.cn/article/108684.htm]详解IIS中URL重写工具的匹配URL-规则模式(rule patterns)[/url] [b]示例详解说明{R:N}和{C:N}[/b] 假设我们要将地址http://192.168.1.100:8080/Home/TestUrlRewrite做301重定向到http://192.168.1.100:8080/TestUrlRewrite/Index,那么我们IIS中的设置如下: 1、匹配URL(rule patterns): [img]http://files.jb51.net/file_images/article/201703/2017031623231796.jpg[/img] 上图中我们设置模式的正则表达式为^(.*?)/?Home(/TesturlRewrite)$,我们点击打开测试模式,输入要测试匹配的URL地址:http://192.168.1.100:8080/Home/TestUrlRewrite,如下图所示: [img]http://files.jb51.net/file_images/article/201703/2017031623231797.jpg[/img] 由上图可知,我们成功匹配了测试的URL,根据匹配模式的正则,我们一共可以捕获到3组内容,其中{R:0}上面有说过表示的是全部的内容,{R:1}捕获到的是http://192.168.1.100:8080,{R:2}捕获到的反向引用是/TestUrlRewrite 2、规则条件(Rule conditions): [img]http://files.jb51.net/file_images/article/201703/2017031623231798.jpg[/img] 这里我们添加了一个条件过滤,只匹配192.168.1.100:8080这个HTTP_HOST主机。在测试的时候只捕获到一个反向引用组,即{C:0}: [img]http://files.jb51.net/file_images/article/201703/2017031623231799.jpg[/img] 3、操作规则(Rule Action): 最后设置操作规则,设置重定向URL为:{R:2}/Index,上面我们已经知道{R:2}就是反向引用所捕获的/TestUrlRewrite,完整重定向的URL地址为:/TestUrlRewrite/Index。这样就成功实现了使用反向引用来进行重定向操作。 [img]http://files.jb51.net/file_images/article/201703/20170316232317100.jpg[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部