2009-09-29 97 views
0

我正在使用URLRewritingNet 2.0。如何在ASP.NET中重寫URL?URLRewriting挑戰

這裏是要求:

  • 輸入:www.sampleweb.com/param1/value1/param2/value2/default.aspx
  • 輸出:www.sampleweb.com/default.aspx?param1=value1&param2=value2

必須動態地工作,這樣param1/value1/param2/value2/ ... /paramN/valueN

+1

這確實是一個不好的方式來傳遞參數! – 2009-09-29 17:45:49

+0

如果你的輸入是像:www.sampleweb.com/value1/value2/default.aspx和輸出可能是你正在尋找的,如果它是好的,那麼我會爲你提供鏈接和幫助來實現這一點。 – 2009-09-30 04:46:34

回答

0

這不是一個很好的方式來傳遞關鍵/值對。

您應該根據值的位置來設定密鑰。這使生活變得更容易。 HttpContext.RewritePath(及其變體)是你如何去轉換url。

0

所以......基本上你不能在你的web.config文件中的「rewrite」節點上使用ASP.Net的URL重寫器來做到這一點。

但是你可以在你的代碼的其他地方(HTTP模塊或開始請求,或其他)做到這一點。要改變你的URL,你可以做這樣的事情:

string strRegex= @"/([^/]*)/([^/]*)"; 
    RegexOptions myRegexOptions = RegexOptions.None; 
    Regex myRegex = new Regex(strRegex, myRegexOptions); 
    string strTargetString = @"/param1/value1/param2/value2/param3/value3/param4/value4"; 
    string strReplace = @"$1=$2&"; 

如果您結合起來,與文件名(這裏的RE)匹配:

(.*)/([^/]*\..*)$ 

,然後重新組成完整的URL - 然後你可以Server.Execute或其他(如果你自己的服務器上)或代理到你想要處理的地方。是的,這有點難看,但如果你無法控制要求的形式,那麼這是一種轉變它的方式。