在我的工作中,我被要求将在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。