2008-08-05 6 views

Répondre

23

Essayez le Managed Fusion Url Rewriter et Reverse Proxy:

http://urlrewriter.codeplex.com

La règle de réécriture ce serait être:

# clean up old rules and forward to new URL 
RewriteRule ^/?user=(.*) /users/$1 [NC,R=301] 

# rewrite the rule internally 
RewriteRule ^/users/(.*) /?user=$1 [NC,L] 
+0

Une suggestion: Je voudrais ajuster la première RewriteRule pour ressembler^/? users = (\ w *) pour que http://www.website.com/?users=smith&day=monday ne produise pas http://www.website.com/users/smith&day=monday – Dscoduc

+0

C'est un bonne idée et totalement supporté dans cette version .NET. L'intention initiale était de rendre mon exemple compatible avec mod_rewrite qui ne supporte pas cette syntaxe. –

+0

C'est génial. –

20

Scott Guthrie couvre comment faire cela nativement dans .Net assez largement here. J'ai utilisé l'approche httpmodule et cela fonctionne bien. C'est essentiellement ce que ManagedFusion fait pour vous.

+0

Merci, le blog ScottGu était sur place! –

4

J'ai utilisé une HttpModule pour url rewriting de www.urlrewriting.net avec grand succès (même si je crois beaucoup plus tôt, la version simple)

Si vous avez très peu de règles de réécriture réels alors les correspondances URL intégrées à .NET 2.0 sont probablement une option plus facile, il y a quelques ecrits de ces sur le web, le 4guysfromrolla semble assez exhaustif mais comme vous pouvez le voir, ils ne supportent pas les mappings d'expressions rationnelles et sont donc rendus assez inutiles dans un environnement dynamique (en supposant " smith "dans votre exemple n'est pas un cas particulier, alors cela ne serait d'aucune utilité)

5

Microsoft envoie désormais un mod officiel de réécriture d'URL pour IIS: http://www.iis.net/download/urlrewrite

Il prend en charge la plupart des types de réécriture, y compris la définition de variables de serveur et de caractères génériques.

Il existera également sur toutes les instances Web Azure prêtes à l'emploi.

+0

Cela semble intéressant. Savez-vous si cela fonctionnera sur IIS6 et à quel niveau dans la pile réseau il se trouve? – GateKiller

+0

Il s'agit d'une solution IIS7 et supérieure seulement (c'est un module http://learn.iis.net/page.aspx/121/iis-7-modules-overview/), pour IIS6 vous aurez besoin de www.isapirewrite.com ou www.urlrewriter.net, réécriture isapi semble être un produit commercial stable pour iis6 –

+0

@GateKiller :) j'ai oublié de vous avertir dans mon commentaire préc. –