Klarstellung der IIS-URL-Umschreibung {R: N}

79

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

Anwendungsbeispiel:

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

Ich habe ScottGu mit {R: 1} gesehen

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

Wir haben uns den IIS-Link unten angesehen, konnten aber die folgende Definition nicht ganz verstehen:

Rückverweise auf Bedingungsmuster werden durch {C: N} identifiziert, wobei N von 0 bis 9 ist; Rückverweise auf Regelmuster werden durch {R: N} gekennzeichnet, wobei N zwischen 0 und 9 liegt. Beachten Sie, dass {R: 0} und {C: 0} für beide Arten von Rückverweisen die übereinstimmende Zeichenfolge enthalten

Nil Pun
quelle

Antworten:

96

Gemäß Dokumentation:

Wenn eine ECMAScript-Mustersyntax verwendet wird, kann eine Rückreferenz erstellt werden, indem der Teil des Musters, der die Rückreferenz erfassen muss, in Klammern gesetzt wird.

Nehmen Sie also das folgende Beispiel in der Dokumentation:

^(www\.)(.*)$

Und wenn Sie die Eingabezeichenfolge www.foo.comin den Bedingungen verwenden , haben Sie:

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

Um es einfach zu machen:

  • {R:x}wird als Rückverweis aus dem Regelmuster ( <match url="...">) verwendet.
  • {C:x}wird als Rückreferenz aus dem Bedingungsmuster ( <conditions><add input="{HTTP_HOST}" pattern="..."></conditions>) verwendet
  • Die 0Referenz enthält die gesamte Eingabezeichenfolge
  • Die 1Referenz enthält den ersten Teil der Zeichenfolge, der dem Muster in der ersten Klammer entspricht (), die 2Referenz die zweite usw. bis zur Referenznummer9

Hinweis:

Bei Verwendung der Mustersyntax "Platzhalter" werden die Rückverweise immer erstellt, wenn im Muster ein Sternsymbol (*) verwendet wird. Es werden keine Rückverweise 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

Cheesemacfly
quelle
9
Falls es jemandem hilft, ist dies auch ein verwandter und sehr hilfreicher Link: nicolas.guelpa.me/blog/2015/02/21/rewrite-redirect-iis.html
niki b
1
@niki b: Ihr Blog hat mir sehr geholfen, weil Sie ausdrücklich gesagt haben: " Wichtig: Die Regel wird nur auf den Pfad angewendet. Lassen Sie sich nicht von der URL des Namens täuschen. (Zum Beispiel in example.com/test , die Regelung und die Domänennamen für den „url“ Matching) ignoriert „und“ Denken Sie immer daran , wenn Sie eine Umleitung debuggen (genauer gesagt ein 301) , dass Browser sie zwischenzuspeichern neigt und dass es kann zu Frustration führen , wenn Sie die Regel , aber nichts ändern passiert ... ". Bitte korrigieren Sie Ihr Beispiel mit dem Domainnamen unter Verwendung von {R: X}, da dies verwirrend ist und wir mit den Regeln keinen Zugriff darauf haben.
Daniel Lobo
@ DanielLobo Ich bin froh, dass der Blog dir geholfen hat. Ich habe es jedoch nicht geschrieben. Wenn Sie möchten, können Sie sich direkt an den Blogger wenden. Aber es ist gut, dass Sie hier darauf hingewiesen haben, dass sich die Leute dessen bewusst sind.
niki b