2010-12-03 5 views
0

J'utilise Url Rewriter pour créer des URL conviviales dans mon application web et ai la règle suivante mis en placeObtenir la dernière partie de l'URL dans la variable avec l'URL Rewriter

<rewrite url="/(?!Default.aspx).+" to="/letterchain.aspx?ppc=$1"/> 

Comment puis-je remplacer 1 $ pour que c'est la dernière partie de l'URL?

Alors que le

suivant

www.mywebapp.com/hello

transformerait à

/letterchain.aspx?ppc=hello

J'ai lu les documents, mais je ne trouve rien.

Répondre

1

La partie $ 1 dans la partie to du groupe fait référence au premier groupe de capture défini (par exemple la partie entre parenthèses).

La partie que vous voulez réellement injecter dans le $ 1 est le. + Qui n'est pas dans un groupe de capture.

Je ne suis pas sûr mais je pense à cause de la « correspondance si le suffixe est absent » requête ce isnt compté comme groupe de capture numérotées de 1 $ donc ce devrait travail (?!):

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$1"/> 

Si il ne marche pas alors juste essayer d'insérer le deuxième groupe de capture dans votre à la place chaîne:

<rewrite url="/(?!Default.aspx)(.+)" to="/letterchain.aspx?ppc=$2"/> 
+0

Juste essayé les deux et dans les deux situations ppc = » " –

+0

hmm cela a fonctionné dans Expresso (un outil de développement regex). quand vous dites ppc = "" voulez-vous dire la réécriture fonctionne et vous envoie à la page? Il me vient à l'esprit que nous avons créé une boucle infinie parce que /letterchain.aspx?ppc= correspond à la partie gauche. Essayez d'ajouter processing = "stop" en tant qu'attribut. – rtpHarry

+0

Aussi, si vous essayez de faire correspondre des urls sans extension avec la réécriture d'url, vous devez être sur iis7 ou installer un mappage générique pour iis6 (http://professionalaspnet.com/archive/2007/07/27/Configure-IIS-for-Wildcard -Extensions-in-ASP.NET.aspx) – rtpHarry

0

S'il vous plaît noter que si vous développez pour IIS 7+ http://www.iis.net/download/urlrewrite/ est un module de Microsoft qui effectue réécritures plus rapide avec une empreinte plus faible.

BTW, votre regex a un petit problème, vous avez besoin d'échapper au caractère point, qui est « /(?!Default.aspx)(.+) »

Questions connexes