2011-06-18 17 views
2

調用urlrewrite我有一個網址爲一個字符串,我要撥打的asp.net代碼(IIS7模塊)重寫他們的方式進入的網址我的應用程序,並從它那裏得到一個改寫網址:從代碼

http://webserver/nice/url/youHaveThere

http://webserver/app/Default.aspx?category=nice&catalog=url&pageid=youHaveThere

我想從一個asp.net應用程序中調用這個函數。我該怎麼做?

回答

0

我假設你已經在你的服務器上安裝了模塊,並且只是詢問如何定義特定的規則。 This是您可以閱讀您創建規則所需的一切內容。

規則都是通過正則表達式來完成的,而不是我的特長。但是,這是一個格式例子:

<rewrite> 
    <rules> 
    <rule name="Rewrite to article.aspx"> 
     <match url="^article/([0-9]+)/([_0-9a-z-]+)" /> 
     <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" /> 
    </rule> 
    </rules> 
</rewrite> 

的([0-9] +)代表數目僅圖案,([_0-9a-Z - ] +)代表文本和號碼。我會認爲這將適用於你所追求的東西:

<rewrite> 
    <rules> 
    <rule name="Rewrite to Default.aspx"> 
     <match url="^article/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)" /> 
     <action type="Rewrite" url="app/Default.aspx?category={R:1}&catalog={R:2}&pageid={R:3}" /> 
    </rule> 
    </rules> 
</rewrite> 
+0

我已經有規則。我想通過這些規則傳遞一個網址,並得到一個由此產生的重寫url –

+1

我知道我錯了,你知道他們對假設的看法。如果你想讓IIS爲你做一個web表單,你可以從這裏開始:http://goo.gl/DODm6你不能在後面的代碼中單獨調用模塊,但它們有AJAX UpdatePanel控件。您可能可以使用類似的東西與IIS進行交互,具體取決於很多因素。 –

0

我不認爲你會稱之爲「重寫規則」。相反,你只需使用正則表達式替換。可能是這樣的:

string nice_url = "http://webserver/nice/url/youHaveThere" 
string new_url = Regex.Replace(nice_url, @"/(?<category>\w+)/(?<catalog>\w+)/(?<pageid>\w+)$", "app/Default.aspx?category=${category}&catalog=${catalog}&pageid=${pageid}"); 
+0

不,我在我的web.config中有許多重寫規則 - 我想通過這些規則運行一個url字符串,並獲取如果我訪問該網站時重寫的url會是什麼 –