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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Nginx相关文章