2013-06-08 21 views
38

Ich konnte den Zweck von {R: N} nicht verstehen. Könnte jemand bitte klären, wann
{R:0} gegen {R:1}IIS URL Rewrite {R: N} Klarstellung

Verwendungsbeispiel verwenden:

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

Ich habe mit gesehen ScottGu {R: 1}

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

Während unten hat {R: 0}

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

hatte einen Blick auf IIS Link unten, aber die Definition verdauen unten nicht beruhigen konnte:

Zurück Verweise auf Bedingungsmuster identifiziert werden durch {C: N}, wobei N von 0 bis 9 ist; Rückverweise auf Regelmuster werden durch {R: N} identifiziert, wobei N von 0 bis 9 ist. Beachten Sie, dass für beide Typen von Rückverweisen {R: 0} und {C: 0} die übereinstimmende Zeichenfolge

enthalten ist

Antwort

53

gemäß der Dokumentation:

Wenn eine ECMAScript Muster Syntax verwendet wird, kann ein Rückverweis indem Klammer um den Teil des Musters erstellt sein, dass den Rückverweis erfassen müssen.

So das Beispiel nehmen, die in der Dokumentation folgt:

^(www\.)(.*)$ 

Und mit dem Eingabestring www.foo.com in den Bedingungen, müssen Sie:

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

es einfach zu machen :

  • {R:x} wird als Rückreferenz vom Regelmuster verwendet (<match url="...">).
  • {C:x} wird als Rückverweis von dem Bedingungsmuster (<conditions><add input="{HTTP_HOST}" pattern="..."></conditions>)
  • Die 0 Referenz enthält die gesamte Eingabezeichenfolge
  • Die 1 Referenz enthält den ersten Teil der Zeichenfolge passenden, das Musters in der ersten Klammer eingesetzt (), die 2 verweisen auf die zweite, etc ... bis zu der Referenznummer 9

Hinweis:

Bei Verwendung der "Wildcard" -Mustersyntax werden die Rückverweise immer erstellt, wenn ein Sternchen (*) im Muster verwendet wird. Nein Rückverweise werden erstellt, wenn "?" wird im Muster verwendet.

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