IIS URL重写{R:N}澄清

Nil*_*Pun 63 iis-7 url-rewriting

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

用法示例:

<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />
Run Code Online (Sandbox Code Playgroud)

我用{R:1}看过ScottGu

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},将包含匹配的字符串

che*_*fly 83

根据文件:

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

因此,请参考文档中的示例:

^(www\.)(.*)$
Run Code Online (Sandbox Code Playgroud)

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

{C:0} - www.foo.com
{C:1} - www.
{C:2} - foo.com
Run Code Online (Sandbox Code Playgroud)

简单来说:

  • {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

  • 如果它可以帮助某人,这也是一个相关且非常有用的链接:https://nicolas.guelpa.me/blog/2015/02/21/rewrite-redirect-iis.html (7认同)
  • @niki b:你的博客确实对我有很大帮助,因为你明确地说“_重要:该规则仅适用于路径;不要让名称 url 欺骗你。(例如,在 http://example.com 中)。 com/test,“url”匹配时会忽略方案和域名)_”,以及“_始终​​记住,当您调试重定向(特别是 301)时,浏览器往往会缓存它们,并且当您改变规则但什么也没有发生......_”。请使用使用 {R:X} 的域名更正您的示例,因为它令人困惑,我们无法通过规则访问它。 (2认同)