php-iis web.config文件上的{R:1}和{C:1}之间的区别

在我的工作中,我被要求将在iis / azure上运行的PHP应用程序迁移到通过GNU Linux机器上的Nginx和fpm运行.

然后在此过程中,我遇到了一个名为web.config的文件,其中包含条目,例如:

<action name="SomeName" stopProcessing="true">
   <match url=".*" ignoreCase="true" />
   <conditions>
      <add input="{URL}" pattern="^some_regex^">
   </conditions>
   <action type="Rewrite" url="index.PHP?someaction={C:1}">
</action>

要么

<action name="SomeName" stopProcessing="true">
   <match url=".*" ignoreCase="true" />
   <conditions>
      <add input="{URL}" pattern="^some_regex^">
   </conditions>
   <action type="Rewrite" url="index.PHP?someaction={R:1}">
</action>

到目前为止,我认为像这样的Nginx映射:

^some_regex^ index.PHP?someaction=$1;

会在两个动作中都做得到(以某种方式).但是我仍然无法理解正则表达式机器上的{C:1}和{R:1}之间的区别,我知道在我的Nginx中会像$1(一个subregex匹配项),但是与web.config的区别是{C: 1}和{R:1}项?

我问是因为我可能需要更改Nginx的subregex匹配项,以便确定匹配项是{C:1}还是{R:1}.

最佳答案
这是你的答案

对条件模式的后向引用由{C:N}标识,其中N为0到9.对规则模式的后向引用由{R:N}标识,其中N为0到9.请注意,对于两种类型的向后引用{R:0}和{C:0}将包含匹配的字符串.有关更多详细信息,请查看:IIS URL Rewrite {R:N} clarification

您可以找到更多的信息:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#using-back-references-in-rewrite-rules

相关文章

一、Linux下Nginx的安装 1.去官网&#160;http://nginx.org/download/下载对应的Nginx安装包,推荐使...
一、空格:默认匹配、普通匹配 location / { root /home; } 二、= :精确匹配(表示匹配到 /home/resou...
``` nginx -c 配置文件路径 ``` ``` /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.con...
前言 nginx可所谓是如今最好用的软件级别的负载均衡了。通过nginx的高性能,并发能力强,占用内存下的特...
1.ngnix概念 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄...
博客园从今天上午就开始报502错误 , 他的原因还不知道 , 暂时先说下我们遇到502的排查情况 最大的可能性...