2010-12-22 19 views
1

I 2 url Rewrite-Regeln in meinem web.config erstellt haben, die wie folgt aussehen:Intelligencia URL Rewrite Problem

Rewrite url = "~/Produkte /(.+) aspx." To = "~/Produkte aspx? cat = $ 1"

Rewrite url = "~/Produkte /(.+)/(.+). aspx" to = "~/Products.aspx? Cat = $ 1 & SubCat = $ 2"

Wenn ich Products/xyz.aspx eintippe, funktioniert es perfekt, aber wenn ich eine URL versuche, die die zweite Regel wie Products/xyx/abc.aspx implementiert, übergibt sie sowohl xyz als auch abc an die Cat und nicht an die SubCat. Irgendwelche Ideen, wie ich es mit beiden umgehen kann?

Antwort

0

Ich schlage vor, alle Übereinstimmungen auf der "." Symbol, da es Ihre Matches etwas schwerer vorhersagbar macht. Verwenden Sie stattdessen Zeichenmuster, die Ihre Produktkategorien und Unterkategorien abdecken.

rewrite url="~/Products/([a-zA-Z0-9]+).aspx" to="~/Products.aspx?Cat=$1" 

rewrite url="~/Products/[a-zA-Z0-9]+)/[a-zA-Z0-9]+).aspx" to="~/Products.aspx?Cat=$1&SubCat=$2" 
+0

Danke Jason, arbeitete wie ein Charme. – Grant

0

Versuchen Sie, Ihre regex nicht gierige wie machen:

rewrite url="~/Products/(.+?)/(.+).aspx" to="~/Products.aspx?Cat=$1&SubCat=$2" 
         ^
0

Das ist, weil reguläre Ausdrücke ist gierig. Die (.+) in der ersten Zeile entspricht so viel wie möglich, einschließlich xyz/abc. Die schnelle Lösung für Ihr Problem ist wahrscheinlich, das erste Muster zu ändern, um ([^/]+) stattdessen zu verwenden (Sie müssen möglicherweise die / irgendwie abhängig von Ihrer Umgebung entgehen).

+0

Hallo Ben, könnten Sie mir vielleicht ein Beispiel dafür geben, wie die URL-Neufassung aussehen würde, da reguläre Ausdrücke keine meiner Stärken sind. Danke – Grant