设为首页 收藏本站
查看: 1160|回复: 0

[经验分享] 详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}

[复制链接]

尚未签到

发表于 2017-12-27 21:52:25 | 显示全部楼层 |阅读模式
  原文作者:十有三
  原文出处:http://shiyousan.com/post/635648886502897428
  URL Rewrite(URL重写工具)作为IIS下较为常用的模块组件, 提供了重写、重定向、自定义响应、中止请求等功能。但是其相关的中文资料比较缺少,官方倒是有完整和详细的英文文档,之前我在项目中遇到需要设置重写/重定向URL操作规则时,对于范例中的{R:N}和{C:N}规则就理解的十分辛苦,因此写下本文分享下经验。
  这里先附上官网的文档,其实文档链接在IIS的URL重写模块的右边菜单就有:URL Rewrite Module Configuration Reference(URL重写模块配置参考)  ,也可以看这篇URL 重写模块页
R和C表示的是什么意思?
  这里先看官方文档的说明:
Back-references to condition patterns are>  文档链接地址:Using back-references in rewrite rules
  {R:N}和{C:N}主要是使用了正则表达式的back-references(中文名词:反向引用/逆向引用/后向引用/向后引用),关于正则的反向引用这里就不多加说明,可以参考这三篇文章:

  • 反向引用
  • 后向引用
  • Using Back References
  我们只要知道R表示的是rule patterns(规则模式,就是匹配URL的模式),C表示的是condition patterns(条件模式,规则条件的属性)。{R:N}和{C:N}中的N是指正则表达式中反向引用所捕获到的组号,有0至9的组号。需要注意的是,{R:0}和{C:0}表示全部匹配。其它的比如{R:1}或者{C:1}的组号是1,所以会匹配到分组1所捕获到的内容,其他带组号的则对应其正则所匹配到的组号内容。
  关于规则模式和规则条件,可以参考这两篇文章

  • 详解IIS中URL重写工具的规则条件(Rule conditions)
  • 详解IIS中URL重写工具的匹配URL-规则模式(rule patterns)
示例详解说明{R:N}和{C:N}
  假设我们要将地址http://192.168.1.100:8080/Home/TestUrlRewrite做301重定向到http://192.168.1.100:8080/TestUrlRewrite/Index,那么我们IIS中的设置如下:
1、匹配URL(rule patterns):
DSC0000.jpg

  上图中我们设置模式的正则表达式为^(.*?)/?Home(/TesturlRewrite)$,我们点击打开测试模式,输入要测试匹配的URL地址:http://192.168.1.100:8080/Home/TestUrlRewrite,如下图所示:
DSC0001.jpg

  由上图可知,我们成功匹配了测试的URL,根据匹配模式的正则,我们一共可以捕获到3组内容,其中{R:0}上面有说过表示的是全部的内容,{R:1}捕获到的是http://192.168.1.100:8080,{R:2}捕获到的反向引用是/TestUrlRewrite
2、规则条件(Rule conditions):
DSC0002.jpg

  这里我们添加了一个条件过滤,只匹配192.168.1.100:8080这个HTTP_HOST主机。在测试的时候只捕获到一个反向引用组,即{C:0}:
DSC0003.jpg

3、操作规则(Rule Action):
  最后设置操作规则,设置重定向URL为:{R:2}/Index,上面我们已经知道{R:2}就是反向引用所捕获的/TestUrlRewrite,完整重定向的URL地址为:/TestUrlRewrite/Index。这样就成功实现了使用反向引用来进行重定向操作。
DSC0004.jpg

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428758-1-1.html 上篇帖子: .net core 在IIS上发布502问题 下篇帖子: IIS ajax CORS 访问发送自定义Header时分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表