2013-06-08 11 views
38

Non sono stato in grado di capire lo scopo di {R: N}. Qualcuno potrebbe chiarire quando utilizzare
{R:0} vs. {R:1}URL IIS Riscrivi {R: N} chiarimento

esempio d'uso:

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

Ho visto ScottGu utilizzando {R: 1}

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

considerando che, al di sotto ha {R: 0}

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

Aveva uno sguardo al collegamento IIS di seguito, ma non poteva calmare digerire la definizione di seguito:

Back-riferimenti a condizione modelli sono identificati da {C: N} dove N è 0-9; i riferimenti di ritorno al modello di regole sono identificati da {R: N} dove N è da 0 a 9. Si noti che per entrambi i tipi di riferimenti precedenti, {R: 0} e {C: 0}, conterrà la stringa corrispondente

risposta

53

Come per la documentazione:

Quando si usa una sintassi modello ECMAScript, un back-riferimento può essere creato da mettere tra parentesi intorno alla parte del motivo che deve catturare il back-riferimento.

Quindi, prendendo l'esempio che segue nella documentazione:

^(www\.)(.*)$ 

E utilizzando la stringa di input www.foo.com nelle condizioni, si avrà:

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

di rendere semplice :

  • {R:x} viene utilizzato come riferimento posteriore dal modello di regola (<match url="...">).
  • {C:x} viene utilizzato come riferimento all'indietro dalla condizione pattern (<conditions><add input="{HTTP_HOST}" pattern="..."></conditions>)
  • Il 0 riferimento contiene l'intera stringa di input
  • Il 1 riferimento conterrà la prima parte della stringa corrisponde al modello nella prima parentesi (), il 2 di riferimento il secondo, ecc ... fino al numero di riferimento 9

Nota:

Quando si utilizza la sintassi del motivo "Wildcard", i riferimenti di retro sono sempre creati quando viene utilizzato un simbolo asterisco (*) nel motivo. No i riferimenti precedenti vengono creati quando "?" è usato nel modello.

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

Problemi correlati