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

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

原文作者:十有三

原文出处: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 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):

image.png

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

image.png

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

 

2、规则条件(Rule conditions):

image.png

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

image.png

 

3、操作规则(Rule Action):

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

image.png

相关文章
|
Web App开发 编解码 运维
LNMP详解(十二)——Nginx URL重写实战
LNMP详解(十二)——Nginx URL重写实战
208 2
|
10月前
|
监控 NoSQL 算法
百万级URL重定向工程:大规模网站架构设计与性能优化实战
本文深入探讨了大规模重定向系统的核心挑战与解决方案,涵盖技术瓶颈分析、分布式架构设计、十亿级URL处理策略、全球化部署方案及全链路监控体系。通过数学建模与性能优化,提出三层架构模型,并结合一致性哈希分片算法实现高效路由。同时,对比不同架构的吞吐量与容灾能力,分享某电商平台实践案例,展示性能显著提升。最后展望重定向即服务(RaaS)未来趋势,包括AI动态路由、量子安全跳转和边缘智能等关键技术,为企业提供扩展性强、稳定性高的系统设计参考。
380 25
url重写重定向所有http网址到https网址
url重写重定向所有http网址到https网址
195 4
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
851 0
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
642 0
|
开发框架 搜索推荐 中间件
中间件应用路由和URL重写
【5月更文挑战第2天】中间件应用路由和URL重写
211 3
中间件应用路由和URL重写
|
安全 网络安全 数据安全/隐私保护
Pikachu URL 重定向通关解析
Pikachu URL 重定向通关解析
|
网络协议 应用服务中间件 nginx
nginx 302 301 设置 url 转跳 nginx 资源重定向 nginx tcp 和 http 转发
nginx 代理后端网站,和 网站资源目录重定向到其他连接地址
614 3
|
Windows
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
1035 0
|
7月前
|
网络安全 Windows
Windows IIS 10如何配置自签名SSL并实现自动跳转
本文记录了IIS配置自签名证书及HTTPS跳转的注意事项。包括解决443端口占用问题、URL Rewrite插件安装与配置、web.config修改方法,以及避免因旧教程导致的配置错误。
Windows IIS 10如何配置自签名SSL并实现自动跳转