i.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}之间的正则expression式mach之间的差异我明白,在我的nginx将像$ 1(subregex匹配),但web.config不同的是{C: 1}和{R:1}条目?

我问,因为如果匹配是{C:1}或{R:1},我可能需要更改nginx的subregex匹配。

这是你的答案

对条件模式的反向引用由{C:N}标识,其中N从0到9.对规则模式的反向引用由{R:N}标识,其中N从0到9.注意,对于这两种类型的反向引用{R:0}{C:0}将包含匹配的字符串。 有关更详细的信息,你可以看看: IIS URL重写{R:N}澄清

有关更多信息,请访问: https : //docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#using-back-references-in-rewrite -rules