/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

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

2015-04-17 十有三 1 浏览:3万+ 网站建设运维 服务器

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 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.

文档链接地址:Using back-references in rewrite rules

{R:N}和{C:N}主要是使用了正则表达式的back-references(中文名词:反向引用/逆向引用/后向引用/向后引用),关于正则的反向引用这里就不多加说明,可以参考这三篇文章:

  1. 反向引用
  2. 后向引用
  3. 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所捕获到的内容,其他带组号的则对应其正则所匹配到的组号内容。

关于规则模式和规则条件,可以参考这两篇文章

  1. 详解IIS中URL重写工具的规则条件(Rule conditions)
  2. 详解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):

设置规则模式

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

规则模式测试

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

2、规则条件(Rule conditions):

条件模式设置

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

条件模式测试

3、操作规则(Rule Action):

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

设置操作规则


作者:十有三

出处:https://shiyousan.com/post/635648886502897428

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: IIS8如何安装和使用URL重写工具-URL Rewrite
  • 下一篇: 视频中的GB和BIG5

相关文章
  • 思考ASP.NET网站静态化的利与弊
  • 总结IIS中使用ARR一些要注意的地方和经验-例如遇到重写规则无效的情况
  • 详解IIS中URL重写工具的规则条件(Rule conditions)
  • IIS ARR设置错误引发HTTP 400.605 The request cannot be routed
  • 解决服务器80端口监听异常导致无法打开和访问网站的问题
  • 网站使用plesk面板,页面出现default parallesls plesk page的解决方法

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • CKFinder 3无法删除文件和文件夹出现提示:You cannot delete files in DEMO mode
  • .NET 4.5 使用async和await关键字调用异步方法
  • Avira小红伞如何添加白名单?
  • MongoDB学习笔记:解决编写.mongorc.js脚本无效的问题
  • 超级有意思的程序代码注释--ASCII图片

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号