2010-12-22 86 views
1

我已經創建了我的web.config 2個URL重寫規則,如下所示:Intelligencia URL重寫問題

重寫URL = 「〜/產品/(.+)ASPX。」 到=「〜/產品的.aspx?貓= $ 1"

重寫URL = 「〜/產品/(.+)/(.+)。ASPX」 爲= 「〜/ Products.aspx?貓= $ 1 & SUBCAT = $ 2」

如果我在Products/xyz.aspx中輸入,它可以很好地工作,但如果我嘗試實現第二個規則(如Products/xyx/abc.aspx)的url,它將xyz和abc傳遞給Cat而不是SubCat。任何想法如何我可以得到它來處理兩者?

回答

0

我建議刪除「。」上的所有匹配項。因爲它會使你的比賽更難以預測。請使用任何字符模式來覆蓋您的產品類別和子類別。

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

謝謝傑森,像一個魅力工作。 – Grant 2010-12-22 08:36:08

0

嘗試使您的正則非貪婪爲:

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

那是因爲正則表達式匹配是貪婪。第一行的(.+)儘可能匹配,包括xyz/abc。對於您的問題的快速解決方案可能會改變第一種模式,而不是使用([^/]+)(您可能必須根據您的環境以某種方式轉義/)。

+0

嗨本,你可能會給我一個例子,說明URL重寫的樣子,因爲正則表達式不是我的強項之一。謝謝 – Grant 2010-12-22 07:55:21