99 votes

IIS URL Rewrite {R:N} clarification

Je n'ai pas réussi à comprendre l'utilité de {R:N}. Quelqu'un pourrait-il préciser quand utiliser
{R:0} vs. {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

Alors qu'en dessous, il y a {R:0}

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

J'ai regardé le lien IIS ci-dessous mais je n'ai pas pu digérer la définition ci-dessous :

Les rétro-références aux modèles de conditions sont identifiées par {C:N} où N est compris entre 0 et 9 ; les rétro-références aux modèles de règles sont identifiées par {R:N} où N est compris entre 0 et 9. Notez que pour les deux types de rétro-références, {R:0} et {C:0}, contiendront la chaîne correspondante

118voto

cheesemacfly Points 5733

Conformément à la documentation :

Lorsqu'une syntaxe de motif ECMAScript est utilisée, une référence arrière peut être créée en plaçant des parenthèses autour de la partie du motif qui doit doit capturer la rétro-référence.

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

^(www\.)(.*)$

Et en utilisant la chaîne d'entrée www.foo.com dans le 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 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> )
  • En 0 contient la chaîne d'entrée entière
  • En 1 contiendra la première partie de la chaîne de caractères correspondant au modèle entre les premières parenthèses. () le 2 référence le deuxième, etc... jusqu'au numéro de référence 9

Note :

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X