2011-04-12 59 views
0

我試圖使用UrlRewriter.net一些重寫規則添加到我的ASP.NET web應用程序。問題是我是一個正則表達式新手,並且provided examples是非常基本的。UrlRewriter.net獨家的正則表達式規則

我的問題是:我怎麼區分包含GET查詢參數的網址?

即,如果我添加此規則:

<rewrite url="~/([.+])" to="~/$1.aspx" /> 

它將改寫www.example.com/productswww.example.com/products.aspx,但它也將改寫www.example.com/products?id=1www.example.com/products?id=1.aspx。使用登錄控件時

問題,實際上只發生,因爲它創建類似www.example.com/login?returnUrl=/members一個網址,我不知道如何重寫。

我想的是:

  • 改寫www.ex.com/testwww.ex.com/test.aspx,並且
  • 改寫www.ex.com/test?page=dummy

非常感謝!

而btw我還沒有想到如何打開控制檯調試UrlRewriter。我已經將「寄存器記錄器」部分添加到配置文件中,但是VS輸出窗口什麼也沒有顯示。這也會有所幫助。

回答

0

使用下面的正則表達式匹配:

"~/([^\?]+)(.*)?"

這樣你匹配的一切,直到問號 - 一個或多個字符是不是一個問號。

那麼$ 1保持路徑的一部分,和$ 2一切從 「?」直到URL的結尾。

通知第二分組後的問號括號 - 這意味着你不需要的那部分,所以www.ex.com/test也會起作用。

+0

這個問題解決了我的問題,但我也不得不做'Global.Application_EndRequest'處理一些重寫,因爲登錄控件看到引擎蓋下的URL重寫,所以鏈接被網絡表格中通常的POST搞砸。 – regexnewb 2011-04-13 10:44:15