2008-08-05 9 views

Antwort

23

Versuchen Sie, die Managed Fusion URL Rewriter und Reverse Proxy:

http://urlrewriter.codeplex.com

Die Regel diese zum Umschreiben würde sein:

# 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

Ein Vorschlag: Ich würde die erste RewriteRule anpassen, um wie^aussehen /? users = (\ w *), so dass http://www.website.com/?users=smith&day=monday http://www.website.com/users/smith&day=monday nicht produziert – Dscoduc

+0

Das ist ein gute Idee und vollständig in dieser .NET-Version unterstützt. Die ursprüngliche Absicht war, mein Beispiel mit mod_rewrite kompatibel zu machen, das diese Syntax nicht unterstützt. –

+0

Das ist genial. –

20

Scott Guthrie behandelt, wie man dies nativ in .Net ziemlich ausführlich tut here.

Ich habe den httpmodul Ansatz verwendet und es funktioniert gut. Es ist im Grunde, was ManagedFusion für Sie tut.

+0

Danke, der ScottGu Blog war genau richtig! –

4

Ich habe ein Httpmodule für url von www.urlrewriting.net mit großem Erfolg Umschreiben verwendet (wenn auch ich viel früher glauben, einfachere Version)

Wenn Sie nur sehr wenige tatsächliche Umschreiben Regeln haben dann in .NET gebaut URL-Zuordnungen zu 2.0 sind wahrscheinlich eine einfachere Möglichkeit, es gibt ein paar Write-ups von diesen im Internet, die 4guysfromrolla scheint ziemlich erschöpfend, aber wie Sie sehen können, sie nicht unterstützen regulären Ausdruck Mappings sind als solche ziemlich nutzlos in einer dynamischen Umgebung (vorausgesetzt, " smith "in Ihrem Beispiel ist kein Sonderfall, dann wären diese nutzlos."

5

Microsoft liefert jetzt einen offiziellen URL Rewriting Mod ULE für IIS: http://www.iis.net/download/urlrewrite

Es unterstützt die meisten Arten des Umschreibens einschließlich Servervariablen und Platzhalter festlegen.

Es wird auch auf allen Azure-Web-Instanzen standardmäßig vorhanden sein.

+0

Das sieht interessant aus. Weißt du, ob es auf IIS6 funktioniert und auf welcher Ebene im Netzwerkstack es sitzt? – GateKiller

+0

Dies ist nur eine IIS7-Lösung (es ist ein Modul http://learn.iis.net/page.aspx/121/iis-7-modules-overview/), für IIS6 benötigen Sie www.isapirewrite.com oder www.urlrewriter.net, isapi rewrite scheint wie ein stabiles kommerzielles Produkt für iis6 –

+0

@GateKiller :) vergessen, Sie in meinem prev Kommentar zu benachrichtigen –