web-dev-qa-db-fra.com

IIS URL Rewrite {R: N} clarification

Je n'ai pas été en mesure de comprendre le but de {R: N}. Quelqu'un pourrait-il s'il vous plaît préciser quand utiliser
{R:0} contre. {R:1}

exemple d'utilisation:

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

J'ai vu ScottGu utiliser {R: 1}

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

Considérant que ci-dessous a {R: 0}

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

J’ai jeté un coup d’œil au lien IIS ci-dessous mais n’a pas bien assimilé la définition ci-dessous:

Les références arrière aux modèles de condition sont identifiées par {C: N}, où N va de 0 à 9; Les références arrière au modèle de règle sont identifiées par {R: N}, où N est compris entre 0 et 9. Notez que pour les deux types de références arrière, {R: 0} et {C: 0}, contiendra la chaîne correspondante.

61
Nil Pun

Selon la documentation:

Lorsqu'une syntaxe de modèle ECMAScript est utilisée, une référence arrière peut être créée en mettant des parenthèses autour de la partie du modèle qui doit capturer la référence arrière.

Donc, en prenant l'exemple qui suit dans la documentation:

^(www\.)(.*)$

Et en utilisant la chaîne d'entrée www.foo.com dans les conditions , vous aurez:

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

Pour faire simple:

  • {R:x} est utilisé comme référence arrière à partir du modèle de règle (<match url="...">).
  • {C:x} est utilisé comme référence arrière à partir du modèle de condition (<conditions><add input="{HTTP_Host}" pattern="..."></conditions>)
  • Le 0 référence contient la chaîne entière
  • Le 1 référence contiendra la première partie de la chaîne correspondant au motif de la première parenthèse (), le 2 référence le second, etc ... jusqu'au numéro de référence 9

Remarque:

Lorsque la syntaxe de modèle "Wildcard" est utilisée, les références arrière sont toujours créées lorsqu'un symbole astérisque (*) est utilisé dans le modèle. Aucune référence en arrière n'est créée lorsque "?" est utilisé dans le motif.

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

77
cheesemacfly