94

我无法理解 {R:N} 的用途。任何人都可以澄清何时使用
{R:0}vs.{R:1}

用法示例:

<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />

我见过 ScottGu 使用 {R:1}

http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension.aspx

而下面有 {R:0}

http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx

查看了下面的 IIS 链接,但无法完全理解下面的定义:

条件模式的反向引用由 {C:N} 标识,其中 N 是从 0 到 9;对规则模式的反向引用由 {R:N} 标识,其中 N 从 0 到 9。请注意,对于两种类型的反向引用,{R:0} 和 {C:0} 将包含匹配的字符串

4

1 回答 1

111

根据文档:

当使用 ECMAScript 模式语法时,可以通过在必须捕获反向引用的模式部分周围放置括号来创建反向引用。

因此,以文档中的示例为例:

^(www\.)(.*)$

并使用条件www.foo.com中的输入字符串,您将拥有:

{C:0} - www.foo.com
{C:1} - www.
{C:2} - foo.com

为了简单起见:

  • {R:x}用作来自规则模式 ( <match url="...">) 的反向引用。
  • {C:x}用作条件模式 ( <conditions><add input="{HTTP_HOST}" pattern="..."></conditions>)的反向引用
  • 0引用包含整个输入字符串
  • 引用将1包含与第一个括号中的模式匹配的字符串的第一部分()2引用第二个,等等...直到引用号9

笔记:

当使用“通配符”模式语法时,当在模式中使用星号 (*) 时,总是会创建反向引用。“?”时不创建反向引用 在模式中使用。

http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Using_back-references_in_rewrite_rules

于 2013-06-09T14:53:12.303 回答